Exemple #1
0
 public static void DeletePhoneFromSubscriberAccount(string subID, string phoneNumber)
 {
     try
     {
         using (var client = new RosettianClient())
         {
             client.DeleteSubscriberPhone(subID, phoneNumber, CurrentUser.AsUserDto());
         }
     }
     catch (Exception) { }
 }
 public void SIMPL_should_be_able_to_consume_the_Rosettian_Provisioning_Service_and_call_GetEquipmentModelsAndTypes_method_without_throwing_an_exception()
 {
     try
     {
         using (var client = new RosettianClient())
         {
             client.GetEquipmentModelsAndTypes(UserDto.SIMPLSystemUser);
         }
     }
     catch (Exception ex)
     {
         Assert.Fail("Exception was thrown: {0}", ex);
     }
 }
Exemple #3
0
 public static void AddPhoneToSubscriberAccount(string subID, PhoneDto phone)
 {
     try
     {
         using (var client = new RosettianClient())
         {
             client.CreateSubscriberPhone(subID, phone, CurrentUser.AsUserDto());
         }
     }
     catch (FaultException<ValidationFault> vx)
     {
         throw new Exception(vx.Detail.Details[0].Message, vx);
     }
     catch (Exception ex)
     {
         throw new Exception(Errors.parseXMLError(ex.Message), ex);
     }
 }
        public void SvcController_EditBlockedServices_allBlocked()
        {
            //Data initialization
            var sub = Data.Data.Simplcpe1();
            var dev = sub.Accounts[0].Equipment.FirstOrDefault();
            PartialViewResult result = null;
            if (dev != null)
            {
            dev.BlockedServiceList = sub.Accounts[0].Services;

                using (var client = new RosettianClient())
            {
                    client.UpdateEquipment(dev, _user);
            }

            //Click Edit for Blocked Services
                var expectedSvcAsJSON = ServicesControllerHelper.ConvertServicesToJSON(dev.BlockedServiceList);
                result = _serviceController.EditBlockedServices(expectedSvcAsJSON, sub.ID, dev.SerialNumber, "") as PartialViewResult;
            }
            ServicesModel actualSvcModel = null;
            if (result != null)
            {
                Common.Validation.Validate("BlockedServicesWindow", result.ViewName, "ViewName");

                actualSvcModel = result.Model as ServicesModel;
            }
            if (dev != null)
                if (actualSvcModel != null) Assert.AreEqual((object) dev.SerialNumber, actualSvcModel.DeviceID);
            if (actualSvcModel != null)
            {
            Assert.AreEqual(sub.ID, actualSvcModel.SubscriberID);

            //Validate the services
                Common.Validation.ValidateService(sub.Accounts[0].Services,
                    ServicesControllerHelper.ConvertJSONToServices(actualSvcModel.ServicesAsJSON),
                    TestAttribute.Service);

            //Validate Unblocked Subscriber Services is empty
            Assert.AreEqual(0, actualSvcModel.SubscriberServicesList.Count);

            //Validate Blocked Services displayed matches the actual blocked services
            ValidateBlockedServices(dev.BlockedServiceList, actualSvcModel.BlockedServicesList);
            }
        }
        public void EditBlockedServicesMethod_AllBlocked()
        {
            {
            // Arrange
            PartialViewResult resultEditBlockedServices = null;
            //string expectedServicesAsJSON = null;
            const string ExpectedViewName = "EditBlockedServices_Partial";
            ServicesModel actualServicesModel = null;
            List<ServiceDto> expectedServiceList = null;
            ServiceCollectionDto actualServices = null;
            SubscriberDto expectedSubscriber = SIMPL.Test.IntegrationTest.Data.Data.GetSIMPLSubscriber04CPE01();
            Assert.IsNotNull(expectedSubscriber, "subscriber");
            Assert.IsNotNull(expectedSubscriber.ID, "subscriber.ID");

            // ** Subscriber.Account.Equipment has been removed
            EquipmentDto expectedDevice = expectedSubscriber.Accounts[0].Equipment.FirstOrDefault();
            Assert.IsNotNull(expectedDevice, "expectedDevice");

            expectedDevice.BlockedServiceList = expectedSubscriber.Accounts[0].Services;
            Assert.IsNotNull(expectedDevice.BlockedServiceList, "expectedDevice.BlockedServiceList is null");
            Assert.AreNotEqual(0, expectedDevice.BlockedServiceList.Count, "expectedDevice.BlockedServiceList.Count is zero");

            using (var client = new RosettianClient())
            {
                client.UpdateEquipment(expectedDevice, RosettianUser);
            }

            var expectedServicesAsJSON = ServicesControllerHelper.ConvertServicesToJSON(expectedDevice.BlockedServiceList);

            // Act
            resultEditBlockedServices = ServicesControllerForTests.EditBlockedServices(expectedServicesAsJSON, expectedSubscriber.ID, expectedDevice.SerialNumber, "") as PartialViewResult;

            // Assert - First group
            Assert.IsNotNull(resultEditBlockedServices, "resultEditBlockedServices");

            // ToDo: Need one test to verify that the ViewName is what we expect; don't need to repeat it across all of these tests.
            Assert.AreEqual(ExpectedViewName, resultEditBlockedServices.ViewName, "ViewName");

            // Arrange/Act - Second group
            actualServicesModel = resultEditBlockedServices.Model as ServicesModel;

            // Assert - Second group
            Assert.IsNotNull(actualServicesModel, "actualServicesModel");
            Assert.IsNull(actualServicesModel.ServicesActionResult, "ServicesActionResult is not null");
            //Assert.AreEqual(expectedDevice.SerialNumber, actualServicesModel.DeviceID, "Device.SerialNumber compared to DeviceID");
            Assert.AreEqual(expectedSubscriber.ID, actualServicesModel.SubscriberID, "Subscriber.ID compared to SubscriberID");
            Assert.AreEqual(0, actualServicesModel.SubscriberServicesList.Count, "actualServicesModel.SubscriberServicesList.Count");

            // Arrange/Act - Third group
            expectedServiceList = expectedSubscriber.Accounts[0].Services.OrderBy(x => x.Name).ToList();
            actualServices = ServicesControllerHelper.ConvertJSONToServices(actualServicesModel.ServicesAsJSON);

            // Assert - Third group
            int i = 0;
            foreach (ServiceDto individualService in actualServices)
            {
                Assert.AreEqual(expectedServiceList[i].Name, individualService.Name, "Service Name - index count {0}", i);
                Assert.AreEqual(expectedServiceList[i].Description, individualService.Description, "Service Description - index count {0}", i);
                Assert.AreEqual(expectedServiceList[i].ClassName, individualService.ClassName, "Service ClassName - index count {0}", i);
                i++;
            }

             //Assert - Third group (continued)
            string message = string.Empty;
             //Validate Blocked Services displayed matches the actualViewModel blocked services
            bool resultOfValidation = this.ValidateBlockedServices(expectedDevice.BlockedServiceList, actualServicesModel.BlockedServicesList, out message);
            Assert.IsTrue(resultOfValidation, message);
            }
        }
        public void SubController_saveCustomFieldsSubscriber()
        {
            var sub = Data.Data.Simpltest1();
            sub.CustomFields = new List<CustomField>
            {
                new CustomField{Label ="Service_ID", Value="1234"},
                new CustomField{Label = "PCAN", Value="F123456789"},
                new CustomField{Label = "IP_TYPE", Value="DYNAMIC"},
                new CustomField{Label = "Sub_WTN", Value="1234567890"},
            };
            var expected = Data.Data.SubDetailsViewModel(sub);

            var collection = new FormCollection
                {
                    {"Service_ID", "1234"},
                    {"PCAN", "F123456789"},
                    {"Sub_WTN", "1234567890"},
                    {"IP_TYPE", "DYNAMIC"}
                };

            var result = _subscriberController.saveCustomFieldsSubscriber(collection, sub.ID) as PartialViewResult;
            SubscriberDetailsViewModel actual = null;
            if (result != null)
            {
                Common.Validation.Validate("subscriberCustomFields_Partial", result.ViewName, "ViewName");

                actual = result.Model as SubscriberDetailsViewModel;
            }
            Validation.Validation.ValidateSubscriberDetailsViewModel(expected, actual);

            using (var client = new RosettianClient())
            {
                var actualSub = client.LoadSubscriber(sub.ID, _user);
                Common.Validation.ValidateSubscriber(sub, actualSub, true);
            }
        }
        public void When_editing_subscriber_provisioning_information_the_services_are_not_changed()
        {
            // Given a user

            // And a known subscriber
            // And the subscriber is billed
            // And the subscriber is provisioned
            const string testUSI = "370100037230"; // Field IT Test account
            var subscriber = BusinessFacadeforTests.LoadCompositeSubscriber(testUSI, "WA", RosettianUser);
            Assert.IsNotNull(subscriber, "Loaded subscriber is null.");
            Assert.IsNotNull(subscriber.SubscriberDpi, "The LoadCompositeSubscriber call did not bring back any DPI-related data.  Check the settings in the App.config file to verify that you are using the correct endpoints");

            // And the subscriber has provisioned services
            var originalSubscriberServices = subscriber.SubscriberTriad.Accounts[0].Services;

            // And the cbr needs to be changed on the provisioned account
            var model = subscriber.MapToSubscriberModel();
            var originalCBR = model.SubDetailsModel.CBR;
            CurrentSubscriber.SetInstance(subscriber, model);
            model.SubDetailsModel.CBR = "2189123456";

            // When editing the subscriber
            var actualResult = SubscriberControllerForTests.UpdateSubscriber(model.SubDetailsModel) as JsonResult;

            // Then the user receives a response
            Assert.IsNotNull(actualResult, "The result from the update subscriber was null");

            // And the response is successful
            var expectedJson = new { status = "valid", returnedPartial = "" }.ToJSON();
            Assert.AreEqual(expectedJson, actualResult.Data.ToJSON());

            // And the subscriber cbr is modified
            var updateSubscriber = BusinessFacadeforTests.LoadCompositeSubscriber(testUSI, "WA", RosettianUser);
            Assert.IsNotNull(updateSubscriber.SubscriberDpi, "The LoadCompositeSubscriber call did not bring back any DPI-related data.  Check the settings in the App.config file to verify that you are using the correct endpoints");
            Assert.AreEqual("2189123456", updateSubscriber.SubscriberTriad.SubContactPhone, "The CBR was not updated.");

            // And the provisioned services remain unchanged
            var newServices = updateSubscriber.SubscriberTriad.Accounts[0].Services;
            Assert.IsTrue(newServices.SequenceEqual(originalSubscriberServices, new ServiceComparer()), "The service list is not the same");

            //Cleanup
            subscriber.SubscriberTriad.SubContactPhone = originalCBR;
            try
            {
                using (var client = new RosettianClient())
                {
                    client.UpdateSubscriber(subscriber.SubscriberTriad, true, CurrentUser.AsUserDto());
                }
            }
            catch (System.Exception ex)
            {
                var exceptionHelper = new ExceptionHelper();
                Assert.Fail(exceptionHelper.GetAllInnerExceptionMessagesAndStackTraceForTests(ex));

            }
        }
        public void SubController_SuspendRestoreService_Restore()
        {
            var sub = Data.Data.Simpltest1();

            //Suspend all services (Data, Video, Voice)
            var svctypes = new ServiceClassTypeCollection
            {
                ServiceClassType.Data,
                ServiceClassType.Video,
                ServiceClassType.Voice
            };
            var expectedSvcStatus = new ServiceProfileStatus
            {
                IsDataSuspended = true,
                IsVideoSuspended = true,
                IsVoiceSuspended = true
            };

            ServiceProfileStatus actualSvcStatus;

            using (var client = new RosettianClient())
            {
                client.SuspendService(sub.ID, svctypes, _user);
                actualSvcStatus = client.GetServiceProfileStatuses(sub.ID, _user);
                Common.Validation.ValidateServiceProfileStatus(expectedSvcStatus, actualSvcStatus);
            }

            //Restore video
            const string operation = "Restore";
            const string service = "video";
            expectedSvcStatus = new ServiceProfileStatus
            {
                IsDataSuspended = true,
                IsVideoSuspended = false,
                IsVoiceSuspended = true
            };
            var result = _subscriberController.SuspendRestoreService(sub.ID, operation, service) as JsonResult;
            if (result != null)
            {
            var data = result.Data as ActionResponse;
                Assert.IsTrue(data != null && data.success);
            Assert.IsTrue(string.IsNullOrEmpty(data.errorMessage), data.errorMessage);
            }

            using (var client = new RosettianClient())
            {
                actualSvcStatus = client.GetServiceProfileStatuses(sub.ID, _user);
                Common.Validation.ValidateServiceProfileStatus(expectedSvcStatus, actualSvcStatus);
            }
        }
 /// <summary>
 /// This method takes the Subscriber account object "subscriber" and uses it to save a subscriber.
 /// It is split from the CreateSubscriber method so a user can make changes to the "subscriber" object 
 /// before saving it. It does NOT make another attempt if it fails
 /// Caller will be responsible for handling exceptions thrown
 /// </summary>
 /// <param name="subscriber">Holds the field information of the subscriber</param>
 /// <returns>A boolean that says whether the subscriber was successfully created</returns>
 public bool SaveSubscriberNoRetry(SubscriberDto subscriber)
 {
     bool result = false;
     using (var client = new RosettianClient())
     {
         //Save subscriber
         client.CreateSubscriber(subscriber, CurrentUser.AsUserDto());
         result = true;
     }
     return result;
 }
        /// <summary>
        /// This method takes the Subscriber account object "subscriber" and uses it to save a subscriber.
        /// It is split from the CreateSubscriber method so a user can make changes to the "subscriber" object 
        /// before saving it.
        /// Caller will be responsible for handling exceptions thrown
        /// </summary>
        /// <param name="subscriber">Holds the field information of the subscriber</param>
        /// <returns>A boolean that says whether the subscriber was successfully created</returns>
        public bool SaveMinimalSubscriberWithLocation(SubscriberDto subscriber)
        {
            int iteration = 0;
            bool result = false;

            do
            {
                iteration++;
                try
                {
                    using (var client = new RosettianClient())
                    {
                        //Save subscriber
                        client.CreateSubscriber(subscriber, CurrentUser.AsUserDto());
                        result = true;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    if (iteration == 4)
                    {
                        //throw;
                        string temp = ex.Message;
                    }

                    subscriber = CreateMinimalSubscriberWithLocation();
                }
            } while (iteration != 4);

            return result;
        }
Exemple #11
0
 /// <summary>
 /// Load subscriber specified by USI subID and convert to model instance.
 /// Load is performed twice as an easy means for creating a reference clone
 /// to use in comparing or restoring original state.
 /// Assumption: subscriber being loaded is reserved for a specific test.
 /// </summary>
 /// <param name="subID">USI for subscriber to load</param>
 /// <param name="referenceSub">deep clone of subscriber</param>
 /// <returns>subscriber identified by subID as MVC model</returns>
 public static SubscriberModel GetTestSubModel(string subID, out SubscriberDto referenceSub)
 {
     referenceSub = null;
     try
     {
         using (var client = new RosettianClient())
         {
             var user = CurrentUser.AsUserDto();
             referenceSub = client.LoadSubscriber(subID, user);
             Assert.IsNotNull(referenceSub, "GetTestSubModel() - USI {0} not found.", subID);
             // Create deep copy "clone" (with unique instances) by loading again.
             var rozSub = client.LoadSubscriber(subID, user);
             return rozSub.MapToSubscriberModel();
         }
     }
     catch (Exception)
     {
         return new SubscriberModel();
     }
 }
Exemple #12
0
 public static SubscriberDto GetTestSub(string subID)
 {
     try
     {
         using (var client = new RosettianClient())
         {
             return client.LoadSubscriber(subID, CurrentUser.AsUserDto());
         }
     }
     catch (Exception)
     {
         return new SubscriberDto();
     }
 }
        public void SubController_UpdateSubscriber_noChange4Services()
        {
            var sub = Data.Data.Simpltest1();
            sub.Name = string.Format("{0} updated", sub.Name);
            sub.SubContactEmail = string.Format("{0}.org", sub.SubContactEmail);
            sub.SubContactPhone = "3001000103";
            sub.Accounts[0].PIN = "4321";
            sub.Accounts[0].PinRequired = false;
            sub.Accounts[0].PPVCap = "300.00";
            sub.Accounts[0].PPVPrivilege = "1";
            sub.Accounts[0].PPVResetDay = "10";
            sub.Accounts[0].ServiceEnabled = false;
            var expected = Data.Data.SubDetailsViewModel(sub);

            var result = _subscriberController.UpdateSubscriber(expected) as PartialViewResult;
            SubscriberDetailsViewModel actual = null;
            if (result != null)
            {
                Common.Validation.Validate("SubscriberDetails_Partial", result.ViewName, "ViewName");

                actual = result.Model as SubscriberDetailsViewModel;
            }
            Validation.Validation.ValidateSubscriberDetailsViewModel(expected, actual);

            using (var client = new RosettianClient())
            {
                var actualSub = client.LoadSubscriber(sub.ID, _user);
                Common.Validation.ValidateSubscriber(sub, actualSub, true);
            }
        }
        public void SubController_UpdateLocation_notUpdateCustomFields()
        {
            var sub = Data.Data.Simpltest1();
            var loc = sub.Accounts[0].Location;
            var expectedCustomFileds = Common.Data.DefaultCustomFields_Loc();
            loc.AddressLine1 += "UPDATED1";
            loc.CustomFields = Common.Data.DynamicCustomFields_Loc();
            var expected = Data.Data.LocDetailsViewModel(loc);

            const string message = "Successfully Updated Location";
            var expectedViewData = new ViewDataDictionary
            {
                new KeyValuePair<string, object>("message", message)
            };
            var result = _subscriberController.UpdateLocation(expected) as PartialViewResult;
            LocationDetailsViewModel actual = null;
            if (result != null)
            {
                Common.Validation.Validate("LocationDetails_Partial", result.ViewName, "ViewName");
                Validation.Validation.ValidateViewData(expectedViewData, result.ViewData);

                actual = result.Model as LocationDetailsViewModel;
            }
            Validation.Validation.ValidateLocationDetailsViewModel(expected, actual);

            //Validate Location updated and customfields not updated
            loc.CustomFields = null;

            using (var client = new RosettianClient())
            {
                if (actual != null)
            {
                    var actualLoc = client.LoadLocation(actual.ID, _user);
                    Common.Validation.ValidateLocation(loc, actualLoc);
                    Common.Validation.ValidateCustomFields(expectedCustomFileds, actualLoc.CustomFields);
                }
            }
        }
        public void SubController_UpdateLocation()
        {
            var sub = Data.Data.Simpltest1();
            var loc = sub.Accounts[0].Location;
            loc.AddressLine1 += "UPDATED1";
            loc.AddressLine2 += "UPDATED2";
            loc.CityName = "FORT WAYNE";
            loc.ZipCode = "46835";
            loc.HeadendCode = "01";
            var expected = Data.Data.LocDetailsViewModel(loc);

            const string message = "Successfully Updated Location";
            var expectedViewData = new ViewDataDictionary
            {
                new KeyValuePair<string, object>("message", message)
            };
            var result = _subscriberController.UpdateLocation(expected) as PartialViewResult;
            LocationDetailsViewModel actual = null;
            if (result != null)
            {
                Common.Validation.Validate("LocationDetails_Partial", result.ViewName, "ViewName");
                Validation.Validation.ValidateViewData(expectedViewData, result.ViewData);

                actual = result.Model as LocationDetailsViewModel;
            }
            Validation.Validation.ValidateLocationDetailsViewModel(expected, actual);

            using (var client = new RosettianClient())
            {
                if (actual != null)
            {
                    var actualLoc = client.LoadLocation(actual.ID, _user);
                    Common.Validation.ValidateLocation(loc, actualLoc);
                }
            }
        }
        public void SubController_SuspendRestoreService_Suspend()
        {
            var sub = Data.Data.Simpltest1();

            var expectedSvcStatus = new ServiceProfileStatus
            {
                IsDataSuspended = true,
                IsVideoSuspended = false,
                IsVoiceSuspended = false
            };
            const string operation = "Suspend";
            const string service = "data";

            var result = _subscriberController.SuspendRestoreService(sub.ID, operation, service) as JsonResult;
            if (result != null)
            {
            var data = result.Data as ActionResponse;
                Assert.IsTrue(data != null && data.success);
            Assert.IsTrue(string.IsNullOrEmpty(data.errorMessage), data.errorMessage);
            }

            using (var client = new RosettianClient())
            {
                var actualSvcStatus = client.GetServiceProfileStatuses(sub.ID, _user);
                Common.Validation.ValidateServiceProfileStatus(expectedSvcStatus, actualSvcStatus);
            }
        }
        public void EditBlockedServicesMethod_SomeBlocked()
        {
            // Arrange
            PartialViewResult resultEditBlockedServices = null;
            string expectedServicesAsJSON = null;
            ServicesModel actualServicesModel = null;
            List<ServiceDto> expectedServiceList = null;
            ServiceCollectionDto actualServices = null;
            SubscriberDto expectedSubscriber = SIMPL.Test.IntegrationTest.Data.Data.GetSIMPLSubscriber04CPE01();
            Assert.IsNotNull(expectedSubscriber, "subscriber");
            Assert.IsNotNull(expectedSubscriber.ID, "subscriber.ID");

            EquipmentCollectionDto ec = new EquipmentCollectionDto();
            ec.Add(new EquipmentDto());
            ec[0].AssociatedSubscriberId = expectedSubscriber.ID;
            ec[0].BlockedServiceList.Add(new ServiceDto());
            ec[0].BlockedServiceList[0] = new ServiceDto
            {
                ClassName = ServiceClassType.ProvisionedOntDataPort.GetStringValue(),
                Name = "ENET",
                Description = "RJ-45 ETHERNET PORT"
            };

            expectedSubscriber.Accounts[0].Equipment = new EquipmentCollectionDto();
            expectedSubscriber.Accounts[0].Equipment.Add(ec[0]);

            EquipmentDto expectedDevice = expectedSubscriber.Accounts[0].Equipment.FirstOrDefault();
            Assert.IsNotNull(expectedDevice, "expectedDevice");

            expectedDevice.BlockedServiceList = new ServiceCollectionDto();
            expectedDevice.BlockedServiceList.AddRange(expectedSubscriber.Accounts[0].Services.GetRange(0, 2));

            using (RosettianClient client = new RosettianClient())
            {
                client.UpdateEquipment(expectedDevice, RosettianUser);
            }

            expectedServicesAsJSON = ServicesControllerHelper.ConvertServicesToJSON(expectedDevice.BlockedServiceList);
            Assert.IsNotNull(expectedServicesAsJSON, "expectedServicesAsJSON");

            // Act
            resultEditBlockedServices = ServicesControllerForTests.EditBlockedServices(expectedServicesAsJSON, expectedSubscriber.ID, expectedDevice.SerialNumber, "") as PartialViewResult;

            // Assert - First group
            Assert.IsNotNull(resultEditBlockedServices, "resultEditBlockedServices");

            // Arrange/Act - Second group
            actualServicesModel = resultEditBlockedServices.Model as ServicesModel;

            // Assert - Second group
            Assert.IsNotNull(actualServicesModel, "actualServicesModel");
            Assert.IsNull(actualServicesModel.ServicesActionResult, "ServicesActionResult is not null");
            Assert.AreEqual(expectedSubscriber.ID, actualServicesModel.SubscriberID, "Subscriber.ID compared to SubscriberID");
            Assert.AreEqual(3, actualServicesModel.SubscriberServicesList.Count, "actualServicesModel.SubscriberServicesList.Count");

            // Arrange/Act - Third group
            expectedServiceList = expectedSubscriber.Accounts[0].Services.OrderBy(x => x.Name).ToList();
            actualServices = ServicesControllerHelper.ConvertJSONToServices(actualServicesModel.ServicesAsJSON);

            // Assert - Third group
            int i = 0;
            foreach (ServiceDto individualService in actualServices)
            {
                Assert.AreEqual(expectedServiceList[i].Name, individualService.Name, "Service Name - index count {0}", i);
                Assert.AreEqual(expectedServiceList[i].Description, individualService.Description, "Service Description - index count {0}", i);
                Assert.AreEqual(expectedServiceList[i].ClassName, individualService.ClassName, "Service ClassName - index count {0}", i);
                i++;
            }

            // Assert - Third group (continued)
            string message = string.Empty;
            // Validate Blocked Services displayed matches the actualViewModel blocked services
            bool resultOfValidation = this.ValidateBlockedServices(expectedDevice.BlockedServiceList, actualServicesModel.BlockedServicesList, out message);
            Assert.IsTrue(resultOfValidation, message);
        }
Exemple #18
0
 public static List<PhoneDto> LoadExistingSubscriberPhones(string subID )
 {
     try
     {
         using (var client = new RosettianClient())
         {
             return client.LoadSubscriberPhones(subID, CurrentUser.AsUserDto())
                       .OrderBy(p => p.PhoneProvSpec.EquipmentId)
                       .ToList();
         }
     }
     catch (FaultException<ValidationFault> vx)
     {
         throw new Exception(vx.Detail.Details[0].Message, vx);
     }
     catch (Exception ex)
     {
         throw new Exception(Errors.parseXMLError(ex.Message), ex);
     }
 }
        public void AddServicesTest()
        {
            using (var client = new RosettianClient())
            {
                // initialize
                MyTestInitialize();

                // get test subscriber
                var testSubscriber = IntegrationTest.Data.Data.GetSIMPLSubscriber04CPE01();

                // create existing service list
                string existingServiceClassName = ServiceClassType.ProvisionedOntDataPort.GetStringValue();
                const string existingServiceName = "ENET";
                const string existingServiceDescription = "RJ-45 ETHERNET PORT";
                var existingService = new ServiceDto
                {
                    ClassName = existingServiceClassName,
                    Name = existingServiceName,
                    Description = existingServiceDescription
                };
                var existingServicesList = new List<ServiceDto> {existingService};

                // set current subscriber
                testSubscriber.Accounts.First().Services = existingServicesList.ToCollection();
                CurrentSubscriber.SetInstance(testSubscriber);

                // create service to add
                const string serviceToAddClassName = "DATA - FTTH SPEED";
                const string serviceToAddName = "F50M20M";
                const string serviceToAddDescription = "50M DOWN 20M UP";
                var serviceToAdd = new ServiceDto
                {
                    ClassName = serviceToAddClassName,
                    Name = serviceToAddName,
                    Description = serviceToAddDescription
                };
                var serviceToAddAsJSON = "[" + new JavaScriptSerializer().Serialize(serviceToAdd) + "]";

                // create expected service list (includes existing service and service to add)
                var expectedServicesListAfterAdd = new List<ServiceDto> {existingService, serviceToAdd};

                // create controller reference
                var servicesController = DependencyResolver.Current.GetService<ServicesController>();

                // ACT
                var actualJsonResult = servicesController.AddServices(serviceToAddAsJSON) as JsonResult;

                // ASSERT
                Assert.IsNotNull(actualJsonResult);
                Assert.IsInstanceOfType(actualJsonResult, typeof (JsonResult));

                // Verify the returned JSON
                dynamic actualJson = actualJsonResult.Data;
                var status = actualJson.status as string;
                Assert.IsNotNull(status);
                if (status == "error")
                {
                    var exceptionMessage = actualJson.errorMessage;

                    // Failure in action method -- report exception
                    Assert.Fail("Add Service test - unexpected JsonResult values, code = {0}\r\nmessage = {1}", status, exceptionMessage);
                }
                Assert.AreEqual("success", status, "Add Service test - unexpected status from update operation");

                // load updated subscriber
                var updatedSubscriber = client.LoadSubscriber(testSubscriber.ID, CurrentUser.AsUserDto());

                // verify the services list
                Assert.IsTrue(updatedSubscriber.Accounts.First().Services.SequenceEqual(expectedServicesListAfterAdd, new ServiceComparer()));
            }
        }
 /// <summary>
 /// Deletes a subscriber but leaves the location
 /// Caller will be responsible for handling exceptions thrown
 /// </summary>
 /// <returns>A boolean that says whether the subscriber was successfully deleted</returns>
 public bool DeleteSubscriberLeaveLocation(SubscriberDto subscriber)
 {
     using (RosettianClient rc = new RosettianClient())
     {
         Thread.Sleep(200);
         rc.DeleteSubscriber(subscriber, CurrentUser.AsUserDto());
         return true;
     }
 }
        /// <summary>
        /// This method takes the Subscriber account object "subscriber" and uses it to save a subscriber.
        /// It is split from the CreateSubscriber method so a user can make changes to the "subscriber" object 
        /// before saving it. It will make up to four attempts to succeed.
        /// Caller will be responsible for handling exceptions thrown
        /// </summary>
        /// <param name="subscriber">Holds the field information of the subscriber</param>
        /// <returns>A boolean that says whether the subscriber was successfully created</returns>
        public bool SaveSubscriber(SubscriberDto subscriber)
        {
            int iteration = 0; //Used to keep track of how many attempts were made
            bool result = false;

            do
            {
                iteration++;
                try
                {
                    using (var client = new RosettianClient())
                    {
                        //Save subscriber
                        client.CreateSubscriber(subscriber, CurrentUser.AsUserDto());
                        result = true;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    //Try four times before throwing an error
                    if (iteration == 4)
                    {
                        //throw;
                        string temp = ex.Message;
                    }

                    subscriber = CreateSubscriber();
                }
            } while (iteration != 4);

            return result;
        }
        /// <summary>
        /// Generate the location
        /// </summary>
        /// <returns></returns>
        public LocationDto GenerateLocationForLocalObject()
        {
            LocationDto lDto = new LocationDto();
            lDto.ID = GenerateALocationIDForLocalObject();
            lDto.CityName = GenerateACityNameForLocalObject();
            lDto.AddressLine1 = GenerateAnAddress1ForLocalObject();
            lDto.AddressLine2 = String.Empty;
            lDto.ZipCode = "46816";
            lDto.ZipPlusFourCode = string.Empty;
            lDto.StateName = "IN";
            lDto.HeadendCode = "01";
            lDto.HasSubscriber = true;
            lDto.FacilityList = new List<FacilityDto>();
            lDto.CustomFields = new List<CustomFieldDto>();

            using (var client = new RosettianClient())
            {
                var user = CurrentUser.AsUserDto();
                client.CreateLocation(lDto, user);
            }

            return lDto;
        }
 /// <summary>
 /// CreateSubNote - creates a subscriber note (in Triad via Rosettian)
 /// </summary>
 /// <param name="subscriberId"></param>
 /// <param name="note"></param>
 public void CreateSubNote(string subscriberId, NoteDto note)
 {
     using (var client = new RosettianClient())
     {
         client.CreateSubNote(subscriberId, note, CurrentUser.AsUserDto());
     }
 }
        public void SubController_SubmitChangeLocation()
        {
            var sub = Data.Data.Simpltest1();
            var loc = sub.Accounts[0].Location;
            var newLoc = Data.Data.Simplloc1();
            //var expected = Data.Data.LocDetailsViewModel(newLoc);

            var result = _subscriberController.SubmitChangeLocation(loc.ID, newLoc.ID, sub.ID) as RedirectToRouteResult;

            //Validate action result
            var expectedRoute = new RouteValueDictionary
            {
                {"ID", newLoc.ID},
                {"message", "Location Changed Successfully"},
                {"action", "Location"},
                {"controller", "Subscriber"}
            };
            if (result != null)
            {
                var actualRoute = result.RouteValues;
                Common.Validation.Validate(expectedRoute.ToDictionary(x => x.Key, x => x.Value.ToString()), actualRoute.ToDictionary(x => x.Key, x => x.Value.ToString()), "RouteValueDictionary");
            }

            //Validate Location changed
            using (var client = new RosettianClient())
            {
                var actualSub = client.LoadSubscriber(sub.ID, _user);
                client.LoadLocation(actualSub.Accounts[0].Location.ID, _user);
                Common.Validation.ValidateLocation(newLoc, actualSub.Accounts[0].Location);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="locationId"></param>
        /// <returns></returns>
        public EquipmentCollectionDto GenerateEquipmentCollectionDto(string locationId)
        {
            var criteria = this.GenerateEquipmentCriteria(locationId);
            EquipmentCollectionDto equipColl = new EquipmentCollectionDto();
            equipColl.Add(new EquipmentDto());

            equipColl[0].HeadendCode = "01";
            equipColl[0].LocationId = locationId;
            equipColl[0].Status = criteria.Status;
            equipColl[0].SerialNumber = criteria.SerialNumber;
            EquipmentDto eDto = new EquipmentDto();
            eDto.HeadendCode = "01";
            eDto.LocationId = locationId;
            eDto.SerialNumber = criteria.SerialNumber;
            eDto.Status = criteria.Status;
            eDto.Type.Model = criteria.Model;

            using (var client = new RosettianClient())
            {
                var user = CurrentUser.AsUserDto();
                client.CreateEquipment(eDto, user);
            }
            return equipColl;
        }
        public void SvcController_InitializeBlockedServices()
        {
            var sub = Data.Data.Simplcpe1();
            var dev = sub.Accounts[0].Equipment.FirstOrDefault();
            PartialViewResult result = null;
            if (dev != null)
            {
            dev.BlockedServiceList = sub.Accounts[0].Services;

                using (var client = new RosettianClient())
            {
                    client.UpdateEquipment(dev, _user);
            }

                result = _serviceController.InitializeBlockedServices(dev.BlockedServiceList, sub.ID, dev.SerialNumber) as PartialViewResult;
            }
            ServicesModel actualSvcModel = null;
            if (result != null)
            {
                Common.Validation.Validate("BlockedServices_Partial", result.ViewName, "ViewName");

                actualSvcModel = result.Model as ServicesModel;
            }
            Assert.IsTrue(actualSvcModel != null && actualSvcModel.ServicesActionResult.Success);
            Assert.IsTrue(string.IsNullOrEmpty(actualSvcModel.ServicesActionResult.ErrorMessage) &&
                string.IsNullOrEmpty(actualSvcModel.ServicesActionResult.Result));
            Assert.AreEqual((object) dev.SerialNumber, actualSvcModel.DeviceID);
            Assert.AreEqual(sub.ID, actualSvcModel.SubscriberID);

            var actualBlockedSvc = ServicesControllerHelper.ConvertJSONToServices(actualSvcModel.BlockedServicesAsJSON);
            Common.Validation.ValidateService(dev.BlockedServiceList.ToList(), actualBlockedSvc, TestAttribute.BlockedServiceList);
        }
 /// <summary>
 /// This method loads a Subscriber account object from Rosettian.
 /// Deliberately not catching exception - caller will be responsible for handling exceptions thrown
 /// </summary>
 /// <returns>SubscriberDto object</returns>
 public SubscriberDto LoadSubscriber(string subscriberID)
 {
     using (var client = new RosettianClient())
     {
         return client.LoadSubscriber(subscriberID, CurrentUser.AsUserDto());
     }
 }
        public void SvcController_SaveBlockedServices()
        {
            //Data initialization
            var sub = Data.Data.Simplcpe1();
            var dev = sub.Accounts[0].Equipment.First();
            dev.BlockedServiceList = sub.Accounts[0].Services;

            using (var client = new RosettianClient())
            {
                client.UpdateEquipment(dev, _user);
            }

            //Save Blocked Services
            dev.BlockedServiceList = new ServiceCollection();
            dev.BlockedServiceList.AddRange(sub.Accounts[0].Services.GetRange(0, 2));

            var expectedSvcAsJSON = ServicesControllerHelper.ConvertServicesToJSON(dev.BlockedServiceList);
            var result = _serviceController.SaveBlockedServices(expectedSvcAsJSON, sub.ID, dev.SerialNumber) as PartialViewResult;
            ServicesModel actualSvcModel = null;
            if (result != null)
            {
                Common.Validation.Validate("BlockedServices_Partial", result.ViewName, "ViewName");

                actualSvcModel = result.Model as ServicesModel;
            }
            ServiceCollection actualBlockedSvc = null;
            if (actualSvcModel != null)
            {
            Assert.AreEqual(dev.SerialNumber, actualSvcModel.DeviceID);
            Assert.AreEqual(sub.ID, actualSvcModel.SubscriberID);

            //Validate blocked svcs
                actualBlockedSvc = ServicesControllerHelper.ConvertJSONToServices(actualSvcModel.BlockedServicesAsJSON);
            }
            Common.Validation.ValidateService(dev.BlockedServiceList.ToList(), actualBlockedSvc, TestAttribute.BlockedServiceList);

            //Validate blocked svcs actually updated
            using (var client = new RosettianClient())
            {
                var actualEquip = client.LoadEquipment(dev.SerialNumber, true, _user);
                Common.Validation.ValidateEquipment(dev, actualEquip);
            }
        }
        public void SvcController_SaveBlockedServices_Remove()
        {
            //Data initialization
            var sub = Data.Data.Simplcpe1();
            var dev = sub.Accounts[0].Equipment.First();
            dev.BlockedServiceList = sub.Accounts[0].Services;

            using (var client = new RosettianClient())
            {
                client.UpdateEquipment(dev, _user);
            }

            //Save Blocked Services
            dev.BlockedServiceList = new ServiceCollection();

            var expectedSvcAsJSON = ServicesControllerHelper.ConvertServicesToJSON(dev.BlockedServiceList);
            var result = _serviceController.SaveBlockedServices(expectedSvcAsJSON, sub.ID, dev.SerialNumber) as PartialViewResult;
            Debug.Assert(result != null, "result != null");
            Common.Validation.Validate("BlockedServices_Partial", result.ViewName, "ViewName");

            var actualSvcModel = result.Model as ServicesModel;
            Debug.Assert(actualSvcModel != null, "actualSvcModel != null");
            Assert.AreEqual(dev.SerialNumber, actualSvcModel.DeviceID);
            Assert.AreEqual(sub.ID, actualSvcModel.SubscriberID);
            var actualBlockedSvc = ServicesControllerHelper.ConvertJSONToServices(actualSvcModel.BlockedServicesAsJSON);
            Assert.AreEqual(0, actualBlockedSvc.Count());

            //Validate blocked svcs actually updated
            using (var client = new RosettianClient())
            {
                var actualEquip = client.LoadEquipment(dev.SerialNumber, true, _user);
                Assert.IsTrue(actualEquip.BlockedServiceList == null || !actualEquip.BlockedServiceList.Any());
            }
        }
        public void SubController_saveCustomFieldsLocation()
        {
            var sub = Data.Data.Simpltest1();
            var loc = sub.Accounts[0].Location;
            loc.CustomFields = new List<CustomField>
            {
                new CustomField{Label="DROP_TYPE",Value="BURIED"},
                new CustomField{Label="ADDRESS_ID",Value="12345678"}
            };

            var collection = new FormCollection { { "DROP_TYPE", "BURIED" }, { "ADDRESS_ID", "12345678" } };

            var result = _subscriberController.saveCustomFieldsLocation(collection, loc.ID) as PartialViewResult;
            LocationDetailsViewModel actual = null;
            if (result != null)
            {
                Common.Validation.Validate("locationCustomFields_Partial", result.ViewName, "ViewName");

                actual = result.Model as LocationDetailsViewModel;
            }
            if (actual != null)
            {
            Assert.AreEqual(loc.ID, actual.ID, "LocationID");
                Common.Validation.ValidateCustomFields(loc.CustomFields, actual.CustomField);
            }

            using (var client = new RosettianClient())
            {
                var actualSub = client.LoadSubscriber(sub.ID, _user);
                var actualLoc = client.LoadLocation(actualSub.Accounts[0].Location.ID, _user);
                Common.Validation.ValidateLocation(loc, actualLoc);
            }
        }