public void SyncPlantData_HappyPath() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; ShimHttpContext.AllInstances.SessionGet = (o) => session; //Expected Result var expectedResult = new { status = "valid", message = "Success: DPI plant data will be updated in the next 10 minutes." }; var fakeCurrentSubscriber = new ShimCurrentSubscriber { LocationIdGet = () => "0089451", DpiRegionGet = ()=>"CT" }; ShimCurrentSubscriber.SessionInstanceGet = () => fakeCurrentSubscriber; // Call FacilitiesController SyncPlantData ShimEnterpriseClient.AllInstances.SyncPlantDataStringHeaderArgs = delegate { return true; }; //Act var actualResult = FacilitiesControllerForTests.SyncPlantData() as JsonResult; // Test Validation Assert.IsNotNull(actualResult, "JsonResult returned is null"); Assert.IsNotNull(actualResult.Data, "JsonResult Data returned is null"); Assert.AreEqual(expectedResult.ToString(), actualResult.Data.ToString()); } }
public void TestCleanup() { _simplTestContext = null; _controller.Dispose(); _controller = null; ShimCurrentSubscriber.GetInstance = null; _shimsContext.Dispose(); _shimsContext = null; }
public void Can_edit_a_billed_and_provisioned_subscriber_information() { using (ShimsContext.Create()) { var myContext = new SIMPLTestContext(); var currentSubscriber = new ShimCurrentSubscriber(); //Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; //And the subscriber is billed currentSubscriber.FoundInBillingGet = () => true; //And the subscriber is provisioned var subModel = new SubscriberDetailsModel() { Name = "New Name", USI = "ID", CBR = "CBR", TriadEmail = "Email", }; currentSubscriber.NameGet = () => subModel.Name; currentSubscriber.SubIdGet = () => subModel.USI; currentSubscriber.EmailGet = () => subModel.Email; currentSubscriber.CbrGet = () => subModel.CBR; //And the name needs to be changed on the provisioned account ShimCurrentSubscriber.GetInstance = () => currentSubscriber; currentSubscriber.NameSetString = (myName) => { }; ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = (myCurrentSubscriber) => new SubscriberDto(); ShimRosettianClient.AllInstances.UpdateSubscriberSubscriberDtoBooleanUserDto = (myRosettianClient, mySubscriber, overwrite, myUserDto) => true; ShimCurrentSubscriber.UpdateSubscriberDto = (mySubDto) => { }; //When editing the subscriber var result = SubscriberControllerForTests.UpdateSubscriber(subModel) as JsonResult; //Then the user receives a response Assert.IsNotNull(result, "Update Subscriber test - null ActionResult"); Assert.IsNotNull(result.Data, "Update Subscriber test - null ActionResult.Data"); //And the response is successful dynamic resultStatus = result.Data; var status = resultStatus.status as string; Assert.IsNotNull(status); Assert.AreEqual("valid", status, "Reponse Status was error, it should have been valid."); } }
public void User_can_load_a_subscriber_that_is_billed_but_not_provisioned() { using (ShimsContext.Create()) { // Setup const string subscriberID = "999999999999"; string deviceID = null; const string state = ""; const string region = "PA"; const string subscriberName = "Billed Subscriber"; const string expectedTN = "5551231234"; var myContext = new SIMPLTestContext(); // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = delegate { return new SubscriberDto(); }; ShimRosettianClient.AllInstances.LoadSubscriberPhonesStringUserDto = delegate { return new List<PhoneDto>(); }; ShimEnterpriseClient.AllInstances.GetBillingServiceAccountsStringHeaderArgs = delegate { var billingAccount = new BillingandServiceAccountDto(); billingAccount.ServiceAccounts = new List<ServiceAccountDto>(); var customerAccount = new CustomerAccountDto(); var customer = new CustomerDto(); customer.ContactName = subscriberName; customerAccount.Customer = customer; billingAccount.CustomerAccount = customerAccount; var serviceAccountDto = new ServiceAccountDto { SubscriberName = subscriberName, TN = expectedTN, USI = subscriberID, }; billingAccount.ServiceAccounts.Add(serviceAccountDto); return billingAccount; }; ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber { ProvisionedServicesListGet = () => new List<ServiceDto>() }; // When loading that subscriber var result = SubscriberControllerForTests.Index(subscriberID, deviceID, state, region) as ViewResult; //Then the user receives a successful response Assert.IsNotNull(result, "SubscriberController Index method returned null"); Assert.IsNotNull(result.Model, "result.Model method returned null"); var testSubscriberModel = result.Model as SubscriberModel; Assert.IsNotNull(testSubscriberModel, "Subscriber Model returned null"); Assert.AreEqual("200", testSubscriberModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, testSubscriberModel.ActionResponse.Message); var subDetials = testSubscriberModel.SubDetailsModel; Assert.AreEqual(subscriberID, subDetials.USI, string.Format("Billing USI not used: Actual-{0}, Expected-{1}", subDetials.USI, subscriberID)); Assert.AreEqual(subscriberName, subDetials.DisplayedName, string.Format("Billing Subscriber Name not used: Actual-{0}, Expected-{1}", subDetials.DisplayedName, subscriberName)); Assert.AreEqual(region, subDetials.BillingRegion, string.Format("Billing Region is incorrect: Actual-{0}, Expected-{1}", subDetials.BillingRegion, region)); Assert.AreEqual(expectedTN, subDetials.WTN, "WTN do not match billing TN"); } }
public void User_can_load_a_subscriber_that_is_provisioned_but_not_billed() { using (ShimsContext.Create()) { // Setup ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return new LocationDto(); }; ShimRosettianClient.AllInstances.GetServicesUserDto = delegate { return new ServiceCollectionDto();}; const string subscriberID = "999999999999"; const string subscriberContactPhone = "9999999999"; string firstName = "Test"; string lastName = "Account"; string deviceID = null; SIMPLTestContext myContext = new SIMPLTestContext(); // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And a known subscriber var fakeAccountDto = myContext.GetFakeAccountDtoObject(); var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberID, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySubscriberID, myUserObject) => new List<EquipmentDto>(); ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber { DataProductTypeGet = () => SubscriberEnums.DataProductType.Unknown, VideoProductTypeGet = () => SubscriberEnums.VideoProductType.Unknown, VoiceProductTypeGet = () => SubscriberEnums.VoiceProductType.Unknown, ProvisionedServicesListGet = () => new List<ServiceDto>() }; //And the subscriber is not billed ShimEnterpriseClient.AllInstances.GetBillingServiceAccountsStringHeaderArgs = delegate { return null; }; // And the subscriber is provisioned ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (myRosettianClient, mySubId, myUser) => fakeSubscriberDto; ShimRosettianClient.AllInstances.LoadSubscriberPhonesStringUserDto = delegate { return new List<PhoneDto>();}; //Fake DB call to get Headends var headends = new List<HeadEnd>() { new HeadEnd() { EntityKey = new EntityKey(), headend_code = "1", headend_loc = "1", headend_name = "1", headend_nbr = 1, location_id = "1", location_nbr = 1 } }; ShimDBCache.HeadEndCodesGet = delegate { return headends; }; //Fake Line Results DB Call. var testResultsDbSet = new ShimDbSet<test_results>(); testResultsDbSet.Bind(new List<test_results>().AsQueryable()); ShimLineTestEntities.AllInstances.test_resultsGet = delegate { return testResultsDbSet; }; // When loading that subscriber var result = SubscriberControllerForTests.Index(subscriberID, deviceID) as ViewResult; //Then the user receives a successful response Assert.IsNotNull(result, "SubscriberController Index method returned null"); Assert.IsNotNull(result.Model, "result.Model method returned null"); var testSubscriberModel = result.Model as SubscriberModel; Assert.IsNotNull(testSubscriberModel, "Subscriber Model returned null"); Assert.IsNotNull(testSubscriberModel.ActionResponse, "Subscriber Model returned null"); Assert.AreEqual("200", testSubscriberModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, testSubscriberModel.ActionResponse.Message); // And the response contains the subscriber name var subscriberFullName = string.Format("{0} {1}", firstName, lastName); Assert.AreEqual(subscriberFullName, testSubscriberModel.SubDetailsModel.DisplayedName, "Provisioned Name was missing or incorrect"); // And the response contains the subscriber id Assert.AreEqual(subscriberID, testSubscriberModel.SubDetailsModel.USI, "USI was missing or incorrect"); // And the response does not contain the WTN Assert.IsTrue(string.IsNullOrEmpty(testSubscriberModel.SubDetailsModel.WTN), "Reponse contained a WTN"); // And the response also contains a message that indicated the subscriber was not found in DPI Assert.IsFalse(testSubscriberModel.SubDetailsModel.FoundInBilling,"The found in DPI flag was set to true when it should have been false."); } }
public void UpdateIpType_ReturnsCorrectData_WhenChangingFromStaticToDynamic() { using (ShimsContext.Create()) { // ARRANGE const string expectedViewName = "~/Areas/SIMPLNET/Views/Subscriber/SubDetails_Partial.cshtml"; const IPTypeDto newIpType = IPTypeDto.Dynamic; var servicesControllerForTest = ServicesControllerForTests; var testContext = new SIMPLTestContext(); // fake local current subscriber object var fakeCurrentSubscriber = new FakeCurrentSubscriber(); // fake SubscriberDto var fakeSubscriberData = TestContext.DataRow["MapToSubscriberDtoAsJSON"]; Assert.IsNotNull(fakeSubscriberData); var fakeSubscriberDtoAsJson = fakeSubscriberData.ToString().Replace("\r\n", ""); var fakeSubscriberDto = JsonConvert.DeserializeObject<SubscriberDto>(fakeSubscriberDtoAsJson, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore }); // set expected provisioned services list var expectedServicesList = fakeSubscriberDto.Accounts.First().Services.ToList(); var staticService = expectedServicesList.FirstOrDefault(s => s.Name.Equals("STATIC", StringComparison.OrdinalIgnoreCase)); Assert.IsNotNull(staticService); expectedServicesList.Remove(staticService); // fake CurrentSubscriber and Rosettian method calls ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber(); ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = delegate { return fakeSubscriberDto; }; ShimCurrentUser.AsUserDto = testContext.GetFakeUserDtoObject; ShimRosettianClient.AllInstances.UpdateSubscriberSubscriberDtoBooleanUserDto = delegate { return true; }; ShimCurrentSubscriber.UpdateSubscriberDto = delegate(SubscriberDto subscriber) { fakeCurrentSubscriber.SubIpType = subscriber.GetIPType(); fakeCurrentSubscriber.ProvisionedServicesList = subscriber.Accounts.First().Services; }; ShimSubscriberExtension.MapToSubDetailsModelCurrentSubscriber = delegate { return new SubscriberDetailsModel { IPType = fakeCurrentSubscriber.SubIpType }; }; // ACT var actualResult = servicesControllerForTest.UpdateIpType(newIpType); // ASSERT Assert.IsNotNull(actualResult); var actualPartialView = actualResult as PartialViewResult; Assert.IsNotNull(actualPartialView); Assert.AreEqual(expectedViewName, actualPartialView.ViewName); var actualViewModel = actualPartialView.Model as SubscriberDetailsModel; Assert.IsNotNull(actualViewModel); Assert.AreEqual(newIpType, actualViewModel.IPType); Assert.IsTrue(expectedServicesList.SequenceEqual(fakeCurrentSubscriber.ProvisionedServicesList, new ServiceComparer())); } }
public void Technicians_See_Only_Voice_Related_Data_In_Change_Subscriber_Services_Window() { using (ShimsContext.Create()) { SIMPLTestContext testContext = new SIMPLTestContext(); var session = GetShimmedSession(); var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; ShimHttpContext.AllInstances.SessionGet = (o) => session; //set up the services ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber { DataProductTypeGet = () => SubscriberEnums.DataProductType.XDsl, VideoProductTypeGet = () => SubscriberEnums.VideoProductType.IpTv, StateGet = () => "CT", WtnGet = () => "2061272727", ProvisionedServicesListGet = () => GetProvisionedServices() }; ShimCurrentUser.AsUserDto = () => new UserDto() { Email = "fake_Email", Name = "fake_Name", Role = "Tech" }; //User is in Tech role ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "Tech", }; ShimCurrentUser.RetrieveUserRolesString = (x) => new List<int> { Convert.ToInt32(SIMPLDbEnums.RoleTypeEnum.Tech) }; ShimCurrentUser.AllInstances.RolesGet = (x) => new List<int> { Convert.ToInt32(SIMPLDbEnums.RoleTypeEnum.Tech) }; //Shimming the web.config read where it will specify which services are available for Tech's edit functionality var serviceToBeFilteredOut = "RNGDWN"; var appCollection = new NameValueCollection(); appCollection.Add("AvailableServicesForTechEdit", "ADSL,VDSL,VOICE"); appCollection.Add("FilteredChildServicesForTechEdit", serviceToBeFilteredOut); ShimConfigurationManager.AppSettingsGet = () => appCollection; ShimServices.ProvisioningServicesGet = delegate { return GetAvailableServices(); //This are the services which will be available for the subscriber }; ShimSubscriberServicesModel.AllInstances._provisionedServicesGet = delegate { return GetProvisionedServices(); //These are all the provisioned sercives for the subscriber }; var expectedAvailableServices = GetAvailableServicesForTechRole(); var expectedProvisionedServices = GetProvisionedServicesForTechRole(); //Need to call this to instantiate the subscriber service model properly. var initialModel = ServicesControllerForTests.Index(); Assert.IsNotNull(initialModel,"Controller returned null for index request"); var result = ServicesControllerForTests.EditServices(initialModel.Model as SubscriberServicesModel); Assert.IsNotNull(result, "Controller returned null for 'EditServices_Partial' request"); Assert.IsTrue(result is PartialViewResult); Assert.AreEqual((result as PartialViewResult).ViewName, "EditServices_Partial","Retured view is not 'EditServices_Partial'"); var viewModel = (result as PartialViewResult).Model as SubscriberServicesModel; Assert.IsNotNull(viewModel); var availableSvcs = viewModel.AvailableServicesDictionary; var provisionedSvcs = viewModel.ProvisionedServicesDictionary; Assert.IsNotNull(availableSvcs,"Available services object is null"); Assert.IsNotNull(provisionedSvcs, "Provisioned services object is null"); //Just counting the retuned available and provisioned services will suffice int actualNumberOfProvisionedServices = 0; int actualNumberOfAvailableServices = 0; foreach (var className in availableSvcs.Keys) { foreach (var child in availableSvcs[className]) { actualNumberOfAvailableServices++; } } foreach (var className in provisionedSvcs.Keys) { foreach (var child in provisionedSvcs[className]) { actualNumberOfProvisionedServices++; } } Assert.AreEqual(expectedAvailableServices.Count,actualNumberOfAvailableServices,String.Format("Available services don't match. Expected: {0} and Returned: {1}",expectedAvailableServices.Count,actualNumberOfAvailableServices)); Assert.AreEqual(expectedProvisionedServices.Count, actualNumberOfProvisionedServices, String.Format("Provisioned services don't match. Expected: {0} and Returned: {1}", expectedProvisionedServices.Count, actualNumberOfProvisionedServices)); var actualAvailableServices = availableSvcs.SelectMany(x => x.Value).ToList(); var actualProvisionedServices = provisionedSvcs.SelectMany(x => x.Value).ToList(); Assert.AreEqual(0,actualAvailableServices.Where(x => x.Name == serviceToBeFilteredOut).ToList().Count(),"Available services contains value. It should be empty."); Assert.AreEqual(0,actualProvisionedServices.Where(x => x.Name == serviceToBeFilteredOut).ToList().Count(),"Provisioned services contains value. It should be empty. Count"); } }
public void Index_SubscriberDetails_AccountType() { using (ShimsContext.Create()) { // Arrange const string subscriberId = "1234567890"; const string subscriberContactPhone = "4250010001"; const string firstName = "JAMES"; const string lastName = "SMITH"; const AccountTypeDto accountType = AccountTypeDto.Business; var myContext = new SIMPLTestContext(); // Build Fake UserDto var fakeUserDto = myContext.GetFakeUserDtoObject(); // Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "abc123" }; // Build Fake AccountDto var fakeAccountDto = myContext.GetFakeAccountDtoObject(); fakeAccountDto.AccountType = accountType; // Build Fake CustomFieldDto var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); // Build Fake SubscriberDto var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberId, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); // Build Fake PhoneNumberAsIdDto (internally builds the Fake TelephoneNumberDto) var fakePhoneNumberAsIdDto = myContext.GetFakePhoneNumberAsIdDto(subscriberContactPhone); // Build Fake BillingAccountIdDto var fakeBillingAccountIdDto = myContext.GetFakeBillingAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountIdDto var fakeCustomerAccountIdDto = myContext.GetFakeCustomerAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountDto (internaly builds the Fake IndividualNameDto, // the Fake IndividualDto, and the Fake CustomerDto) var fakeCustomerAccountDto = myContext.GetFakeCustomerAccountDto(firstName, lastName, subscriberId, fakeBillingAccountIdDto, fakeCustomerAccountIdDto); // Build Fake CompositeSubscriber var fakeCompositeSubscriber = new CompositeSubscriber() { SubscriberTriad = fakeSubscriberDto, SubscriberDpi = fakeCustomerAccountDto }; // Fake the BusinessFacade.LoadCompositeSubscriber call ShimBusinessFacade.AllInstances.LoadCompositeSubscriberStringStringUserDto = delegate { return fakeCompositeSubscriber; }; //TODO: Figure out why it is failing without below ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = delegate { return new List<EquipmentDto>(); }; ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return new LocationDto(); }; ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = delegate { return new List<EquipmentDto>(); }; ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return new LocationDto(); }; var currentSubscriber = new ShimCurrentSubscriber { SubIdGet = () => subscriberId, ProvisionedServicesListGet = () => new List<ServiceDto>() }; ShimCurrentSubscriber.GetInstance = () => currentSubscriber; // Fake the CurrentSubscriber.SetInstance call ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; // Call Index var result = SubscriberControllerForTests.Index(subscriberId, string.Empty) as ViewResult; // Validate view Assert.IsNotNull(result); Assert.AreEqual("Index2", result.ViewName, "ViewName does not match!"); // Validate subscriber details account type var testSubscriberModel = result.Model as SubscriberModel ?? new SubscriberModel(); var successCode = "200"; Assert.AreEqual(successCode, testSubscriberModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, testSubscriberModel.ActionResponse.Message); var actualSubDetailsModel = testSubscriberModel.SubDetailsModel; Assert.IsNotNull(actualSubDetailsModel, "SubscriberDetailsModel is null"); Assert.AreEqual(subscriberId, actualSubDetailsModel.USI, "USI does not match"); Assert.AreEqual(accountType, actualSubDetailsModel.AccountType, "AccountType does not match"); } }
public void While_trying_to_unlock_a_DSLAM_user_receives_error_message_when_a_FaultException_is_raised() { using (ShimsContext.Create()) { // ARRANGE const DslamPortEnable newLockState = DslamPortEnable.PortStateUnknown; var servicesControllerForTest = ServicesControllerForTests; var testContext = new SIMPLTestContext(); // fake local current subscriber object var fakeCurrentSubscriber = new FakeCurrentSubscriber(); // fake SubscriberDto var fakeSubscriberData = TestContext.DataRow["MapToSubscriberDtoAsJSON"]; Assert.IsNotNull(fakeSubscriberData); var fakeSubscriberDtoAsJson = fakeSubscriberData.ToString().Replace("\r\n", ""); var fakeSubscriberDto = JsonConvert.DeserializeObject<SubscriberDto>(fakeSubscriberDtoAsJson, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore }); // Create copy of minimal DSL provisioned services list for use as expected services reference. var expectedServicesList = fakeSubscriberDto.Accounts.First().Services.ToList(); // Add DSLOFF to expected as this is the only additional service expected. expectedServicesList.Add(new ServiceDto { ClassName = "OVERRIDE", Name = "DSLOFF", Description = "SUSPEND DSL PORT" }); // fake CurrentSubscriber and Rosettian method calls ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber(); ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = delegate { return fakeSubscriberDto; }; ShimCurrentUser.AsUserDto = testContext.GetFakeUserDtoObject; const string expectedErrorMessage = "This is a fault exception message"; var faultDetail = new ValidationDetailDto() { Message = expectedErrorMessage }; var faultDetails = new List<ValidationDetailDto>(); faultDetails.Add(faultDetail); var validationFault = new ValidationFaultDto() { Details = faultDetails }; var fault = new FaultException<ValidationFaultDto>(validationFault); ShimRosettianClient.AllInstances.UpdateSubscriberSubscriberDtoBooleanUserDto = delegate { throw fault; }; ShimCurrentSubscriber.UpdateSubscriberDto = delegate(SubscriberDto subscriber) { fakeCurrentSubscriber.SubIpType = subscriber.GetIPType(); fakeCurrentSubscriber.ProvisionedServicesList = subscriber.Accounts.First().Services; }; ShimSubscriberExtension.MapToSubDetailsModelCurrentSubscriber = delegate { return new SubscriberDetailsModel { IPType = fakeCurrentSubscriber.SubIpType }; }; var wasLoggingCalled = false; ShimErrorLoggingService.AllInstances.LogErrorException = (myClient, myException) => { wasLoggingCalled = true; }; // ACT var actualResult = servicesControllerForTest.UpdateDslamPortGate(newLockState); // ASSERT Assert.IsNotNull(actualResult); var actualJsonResult = actualResult as JsonResult; Assert.IsNotNull(actualJsonResult); Assert.IsTrue(wasLoggingCalled, "An Exception was expected and the logger was expected to have been called"); // verify the returned Json dynamic actualJson = actualJsonResult.Data; var actualStatus = actualJson.status as string; var actualErrorMessage = actualJson.errorMessage as string; Assert.AreEqual("error", actualStatus, "UpdateDslamPortGate() returned Json has unexpected failing result status"); Assert.AreEqual(expectedErrorMessage, actualErrorMessage, "UpdateDslamPortGate() returned errorMessage that doesn't have the expected value"); } }
public void LoadEditSubContent_AccountTypeShowsUnknownInSubDetails_AccountTypeSelectListExcludesUnknown() { using (ShimsContext.Create()) { // subscriber data const string subscriberId = "1234567890"; const string subscriberContactPhone = "4250010001"; const string firstName = "JAMES"; const string lastName = "SMITH"; const AccountTypeDto accountType = AccountTypeDto.Unknown; var myContext = new SIMPLTestContext(); // fake userdto var fakeUserDto = myContext.GetFakeUserDtoObject(); // set current instance ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "abc123" }; // fake account var fakeAccountDto = myContext.GetFakeAccountDtoObject(); fakeAccountDto.AccountType = accountType; // fake custome field var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); // fake subscriber var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberId, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); // fake PhoneNumberAsIdDto (internally builds the Fake TelephoneNumberDto) var fakePhoneNumberAsIdDto = myContext.GetFakePhoneNumberAsIdDto(subscriberContactPhone); // fake BillingAccountIdDto var fakeBillingAccountIdDto = myContext.GetFakeBillingAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // fake CustomerAccountIdDto var fakeCustomerAccountIdDto = myContext.GetFakeCustomerAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountDto (internaly builds the Fake IndividualNameDto, // the Fake IndividualDto, and the Fake CustomerDto) var fakeCustomerAccountDto = myContext.GetFakeCustomerAccountDto(firstName, lastName, subscriberId, fakeBillingAccountIdDto, fakeCustomerAccountIdDto); // Build Fake CompositeSubscriber var fakeCompositeSubscriber = new CompositeSubscriber() { SubscriberTriad = fakeSubscriberDto, SubscriberDpi = fakeCustomerAccountDto }; // Fake the BusinessFacade.LoadCompositeSubscriber call ShimBusinessFacade.AllInstances.LoadCompositeSubscriberStringStringUserDto = delegate { return fakeCompositeSubscriber; }; ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber { SubIdGet = () => "SubId", ProvisionedServicesListGet = () => new List<ServiceDto>() }; // Fake the CurrentSubscriber.SetInstance call ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.StateGet = (myResult) => "CT"; ShimCurrentUser.RetrieveUserRolesString = (myUniqueId) => new List<int>() { 1 }; // expected subscriber details model var expectedSubDetailsModel = (fakeCompositeSubscriber.MapToSubscriberModel() ?? new SubscriberModel()).SubDetailsModel; Assert.IsNotNull(expectedSubDetailsModel, "Expected SubscriberDetailsModel is null"); Assert.AreEqual(subscriberId, expectedSubDetailsModel.USI, "Expected USI does not match"); Assert.AreEqual(accountType, expectedSubDetailsModel.AccountType, "Expected AccountType does not match"); // call LoadEditSubContent Action Method var result = SubscriberControllerForTests.LoadEditSubContent(expectedSubDetailsModel) as PartialViewResult; // validate view Assert.IsNotNull(result, "LoadEditSubContent returned partial view is null"); Assert.AreEqual("EditSub_Partial", result.ViewName, "LoadEditSubContent ViewName does not match!"); // validate returned subscriber details model var actualSubDetailsModel = result.Model as SubscriberDetailsModel; Assert.IsNotNull(actualSubDetailsModel, "Actual SubscriberDetailsModel is null"); var jss = new JavaScriptSerializer(); Assert.AreEqual(jss.Serialize(expectedSubDetailsModel), jss.Serialize(actualSubDetailsModel), "SubscriberDetailsModel does not match"); // validate the account type is still unknown Assert.AreEqual(AccountTypeDto.Unknown, actualSubDetailsModel.AccountType, "AccountType should be Unknown"); // validate the account type select list used for "Edit" contains no unknown even the account type shows unknown in sub details Assert.IsTrue( actualSubDetailsModel.AccountTypeSelectList.All(x => x.Value != AccountTypeDto.Unknown.ToString()), "AccountType dropdownlist should not contain a list item of Unknown"); } }
public void User_receives_an_error_when_trying_to_load_a_location_with_an_invalid_locationid() { //Setup var myContext = new SIMPLTestContext(); using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And a invalid location id var locationId = string.Empty; // When loading that location var actionResult = SubscriberControllerForTests.LoadLocation(locationId) as PartialViewResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); Assert.IsNotNull(actionResult.ViewData, "actionResult.ViewData, actionResult.ViewData method returned null"); // And the response is an error Assert.AreEqual("The Location Id cannot be null or empty.", actionResult.ViewData["error"], string.Format("The response should have been Error Message, but was {0}", actionResult.ViewData["error"])); } }
public void Index_When_DeviceID_IsNull_User_Is_Shown_Index2_View() { using (ShimsContext.Create()) { // Arrange ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return new LocationDto(); }; ShimRosettianClient.AllInstances.GetServicesUserDto = delegate { return new ServiceCollectionDto(); }; const string subscriberID = "999999999999"; const string subscriberContactPhone = "9999999999"; const string firstName = "Test"; const string lastName = "Account"; const string deviceID = null; var myContext = new SIMPLTestContext(); // Build Fake UserDto var fakeUserDto = myContext.GetFakeUserDtoObject(); // Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "abc123" }; ShimCurrentUser.AllInstances.RolesGet = delegate { return new List<int> {1}; }; // Shim Permissions.UserHasGrant ShimPermissions.UserHasGrantGrant = delegate { return true; }; // Shim feature flag ShimFeatureFlags.IsEnabledString = delegate { return true; }; // Build Fake AccountDto var fakeAccountDto = myContext.GetFakeAccountDtoObject(); // Build Fake CustomFieldDto var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); // Build Fake SubscriberDto var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberID, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); // Build Fake PhoneNumberAsIdDto (internally builds the Fake TelephoneNumberDto) var fakePhoneNumberAsIdDto = myContext.GetFakePhoneNumberAsIdDto(subscriberContactPhone); // Build Fake BillingAccountIdDto var fakeBillingAccountIdDto = myContext.GetFakeBillingAccountIdDto(subscriberID, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountIdDto var fakeCustomerAccountIdDto = myContext.GetFakeCustomerAccountIdDto(subscriberID, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountDto (internaly builds the Fake IndividualNameDto, // the Fake IndividualDto, and the Fake CustomerDto) var fakeCustomerAccountDto = myContext.GetFakeCustomerAccountDto(firstName, lastName, subscriberID, fakeBillingAccountIdDto, fakeCustomerAccountIdDto); // Build Fake CompositeSubscriber var fakeCompositeSubscriber = new CompositeSubscriber() { SubscriberTriad = fakeSubscriberDto, SubscriberDpi = fakeCustomerAccountDto, }; // Fake the BusinessFacade.LoadCompositeSubscriber call ShimBusinessFacade.AllInstances.LoadCompositeSubscriberStringStringUserDto = delegate { return fakeCompositeSubscriber; }; // Build Fake fakeEquipmentDto var fakeEquipmentDto = new List<EquipmentDto>(); // Fake the RosettianClient.SearchEquipment call ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySubscriberID, myUserObject) => fakeEquipmentDto; // Fake the EquipmentExtension.ToONTList call // Returning new List<ONT> as this is valid for this test as the subscriber doesn't have any equipment SIMPL.Areas.Common.Extensions.Fakes.ShimEquipmentExtension.ToONTListIEnumerableOfEquipmentDto = (myEquipmentList) => new List<ONT>(); // No Video Devices var fakeVideoDeviceList = new List<SerializableVideoDevice>(); // Fake the EquipmentExtension.ToVideoDeviceList call ShimEquipmentExtension.ToVideoDeviceListIEnumerableOfEquipmentDto = (myVideoDeviceList) => fakeVideoDeviceList; var currentSubscriber = new ShimCurrentSubscriber { SubIdGet = () => "SubId", ProvisionedServicesListGet = () => new List<ServiceDto>() }; ShimCurrentSubscriber.GetInstance = () => currentSubscriber; // Fake the CurrentSubscriber.SetInstance call ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.DataProductTypeGet = (myResult) => SubscriberEnums.DataProductType.Ftth; // Fake the CurrentSubscriber.VideoProductType call ShimCurrentSubscriber.AllInstances.VideoProductTypeGet = (myResult) => SubscriberEnums.VideoProductType.FiberRf; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.VoiceProductTypeGet = (myResult) => SubscriberEnums.VoiceProductType.FiberPots; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.StateGet = (myResult) => "CT"; //Fake DB call to get Headends var headends = new List<HeadEnd>() { new HeadEnd() { EntityKey = new EntityKey(), headend_code = "1", headend_loc = "1", headend_name = "1", headend_nbr = 1, location_id = "1", location_nbr = 1 } }; ShimDBCache.HeadEndCodesGet = delegate { return headends; }; //Fake Line Results DB Call. var testResultsDbSet = new ShimDbSet<test_results>(); testResultsDbSet.Bind(new List<test_results>().AsQueryable()); ShimLineTestEntities.AllInstances.test_resultsGet = delegate { return testResultsDbSet; }; ShimCurrentUser.RetrieveUserRolesString = (myUniqueId) => new List<int>() { 1 }; // 1st Act var result = SubscriberControllerForTests.Index(subscriberID, deviceID) as ViewResult; // 1st set of Asserts Assert.IsNotNull(result, "SubscriberController Index method returned null"); Assert.IsNotNull(result.ViewName, "result.ViewName method returned null"); Assert.IsTrue(result.ViewName.Equals("Index2")); Assert.IsTrue(result.Model is SubscriberModel, "Not SubscriberModel"); // 2nd Act var testSubscriberModel = result.Model as SubscriberModel; // 2nd set of Asserts var successCode = "200"; Assert.AreEqual(successCode, testSubscriberModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, testSubscriberModel.ActionResponse.Message); var jss = new JavaScriptSerializer(); var expectedModel = fakeCompositeSubscriber.MapToSubscriberModel(); expectedModel.SubEquipmentModel.ONTOnlyList = new List<ONT>(); expectedModel.SubEquipmentModel.RGOnlyList = new List<ONT>(); expectedModel.SubEquipmentModel.LoadedSubID = subscriberID; expectedModel.SubEquipmentModel.LoadedLocID = expectedModel.SubLocationModel.LocationID; expectedModel.SubEquipmentModel.WanIpAddress = string.Empty; expectedModel.SubEquipmentModel.MaxStb = string.Empty; Assert.AreEqual(jss.Serialize(expectedModel.ActionResponse), jss.Serialize(testSubscriberModel.ActionResponse)); Assert.AreEqual(jss.Serialize(expectedModel.SubDetailsModel), jss.Serialize(testSubscriberModel.SubDetailsModel)); Assert.AreEqual(jss.Serialize(expectedModel.SubLocationModel),jss.Serialize(testSubscriberModel.SubLocationModel)); // Since deviceID is null, check to verify that LoadedDeviceID is string.Empty Assert.AreEqual(string.Empty, expectedModel.SubLocationModel.LoadedDeviceID, "LoadedDeviceID should be string.Empty is deviceID is null"); Assert.AreEqual(jss.Serialize(expectedModel.SubServicesModel),jss.Serialize(testSubscriberModel.SubServicesModel)); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.ONTList), jss.Serialize(testSubscriberModel.SubEquipmentModel.ONTList), "SubscriberEquipmentModel ONTList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.ONTOnlyList), jss.Serialize(testSubscriberModel.SubEquipmentModel.ONTOnlyList), "SubscriberEquipmentModel ONTOnlyList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.RGOnlyList), jss.Serialize(testSubscriberModel.SubEquipmentModel.RGOnlyList), "SubscriberEquipmentModel RGOnlyList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.VideoDeviceList), jss.Serialize(testSubscriberModel.SubEquipmentModel.VideoDeviceList), "SubscriberEquipmentModel VideoDeviceList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel), jss.Serialize(testSubscriberModel.SubEquipmentModel)); } }
public void LoadEditSubContent() { using (ShimsContext.Create()) { // Arrange const string subscriberId = "1234567890"; const string subscriberContactPhone = "4250010001"; const string firstName = "JAMES"; const string lastName = "SMITH"; const AccountTypeDto accountType = AccountTypeDto.Business; var myContext = new SIMPLTestContext(); // Build Fake UserDto var fakeUserDto = myContext.GetFakeUserDtoObject(); // Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "abc123" }; // Build Fake AccountDto var fakeAccountDto = myContext.GetFakeAccountDtoObject(); fakeAccountDto.AccountType = accountType; // Build Fake CustomFieldDto var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); // Build Fake SubscriberDto var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberId, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); // Build Fake PhoneNumberAsIdDto (internally builds the Fake TelephoneNumberDto) var fakePhoneNumberAsIdDto = myContext.GetFakePhoneNumberAsIdDto(subscriberContactPhone); // Build Fake BillingAccountIdDto var fakeBillingAccountIdDto = myContext.GetFakeBillingAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountIdDto var fakeCustomerAccountIdDto = myContext.GetFakeCustomerAccountIdDto(subscriberId, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountDto (internaly builds the Fake IndividualNameDto, // the Fake IndividualDto, and the Fake CustomerDto) var fakeCustomerAccountDto = myContext.GetFakeCustomerAccountDto(firstName, lastName, subscriberId, fakeBillingAccountIdDto, fakeCustomerAccountIdDto); // Build Fake CompositeSubscriber var fakeCompositeSubscriber = new CompositeSubscriber() { SubscriberTriad = fakeSubscriberDto, SubscriberDpi = fakeCustomerAccountDto }; // Fake the BusinessFacade.LoadCompositeSubscriber call ShimBusinessFacade.AllInstances.LoadCompositeSubscriberStringStringUserDto = delegate { return fakeCompositeSubscriber; }; var currentSubscriber = new ShimCurrentSubscriber { SubIdGet = () => "SubId", ProvisionedServicesListGet = () => new List<ServiceDto>() }; ShimCurrentSubscriber.GetInstance = () => currentSubscriber; // Fake the CurrentSubscriber.SetInstance call ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.StateGet = (myResult) => "CT"; ShimCurrentUser.RetrieveUserRolesString = (myUniqueId) => new List<int>() { 1 }; // Expected subscriber details model var expectedSubDetailsModel = (fakeCompositeSubscriber.MapToSubscriberModel() ?? new SubscriberModel()).SubDetailsModel; Assert.IsNotNull(expectedSubDetailsModel, "Expected SubscriberDetailsModel is null"); Assert.AreEqual(subscriberId, expectedSubDetailsModel.USI, "Expected USI does not match"); Assert.AreEqual(accountType, expectedSubDetailsModel.AccountType, "Expected AccountType does not match"); // Call LoadEditSubContent Action Method var result = SubscriberControllerForTests.LoadEditSubContent(expectedSubDetailsModel) as PartialViewResult; // Validate Action Method result Assert.IsNotNull(result, "LoadEditSubContent returned partial view is null"); Assert.AreEqual("EditSub_Partial", result.ViewName, "LoadEditSubContent ViewName does not match!"); // Validate returned subscriber details model var actualSubDetailsModel = result.Model as SubscriberDetailsModel; Assert.IsNotNull(actualSubDetailsModel, "Actual SubscriberDetailsModel is null"); var jss = new JavaScriptSerializer(); Assert.AreEqual(jss.Serialize(expectedSubDetailsModel), jss.Serialize(actualSubDetailsModel), "SubscriberDetailsModel does not match"); } }
public void MyTestInitialize() { // Setup context var mySimplTestContext = new SIMPLTestContext(); HttpContext.Current = mySimplTestContext.GetHttpSession(); var userName = mySimplTestContext.GetNameFromWindowsIdentity(); CurrentUser.SetInstance(userName); RosettianUser = CurrentUser.AsUserDto(); // Instantiate FacilitiesController used for tests implemented in this class BusinessFacadeforTests = DependencyResolver.Current.GetService<IBusinessFacade>(); FacilitiesController4Test = DependencyResolver.Current.GetService<FacilitiesController>(); FacilitiesController4Test.ControllerContext = new ControllerContext ( new HttpContextWrapper(HttpContext.Current), new RouteData(), FacilitiesController4Test ); }
public void Index_When_Subscriber_Has_CopperFacility_And_Should_Be_Redirected_To_CopperFacility_Page_One_XBox_Multiple_DropTerm_Not_In_The_Correct_Order() { using (ShimsContext.Create()) { const string subscriberID = "999000795553"; const string locationID = ""; const string deviceID = ""; var session = GetShimmedSession(); // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; var mySIMPLTestContext = new SIMPLTestContext(); var expectedTDMSwitch = mySIMPLTestContext.GetFakeTDMSwitch(); var expectedGWR = mySIMPLTestContext.GetFakeGWRDto(); var expectedDSLAM = mySIMPLTestContext.GetFakeDSLAM(); const int numberOfXConnectItems = 1; var previousXConnectTerminalNames = new string[] { "TerminalAssignmentDtoXbox0{0}_PreviousTerminalNameValue" }; var currentXConnectTerminalNames = new string[] { "TerminalAssignmentDtoXbox0{0}_TerminalNameValue" }; var expectedXConnectList = mySIMPLTestContext.GetFakeListXConnect(numberOfXConnectItems, previousXConnectTerminalNames, currentXConnectTerminalNames); const int numberOfDropTermItems = 3; var previousDropTermTerminalNames = new string[] { "TerminalAssignmentDtoXbox01_TerminalNameValue", "TerminalAssignmentDtoDropTerm01_TerminalNameValue", "TerminalAssignmentDtoDropTerm02_TerminalNameValue" }; var currentDropTermTerminalNames = new string[] { "TerminalAssignmentDtoDropTerm01_TerminalNameValue", "TerminalAssignmentDtoDropTerm02_TerminalNameValue", "TerminalAssignmentDtoDropTerm03_TerminalNameValue", }; var expectedDropTermList = mySIMPLTestContext.GetFakeListDropTerm(numberOfDropTermItems, previousDropTermTerminalNames, currentDropTermTerminalNames); var expectedDropTermSequenceList = new List<List<DropTerm>> { expectedDropTermList }; var expectedFacilityAddress = mySIMPLTestContext.GetFakeFacilityAddress(); var localServicePathList = mySIMPLTestContext.GetFakeListServicePath(); var expectedServiceLocation = mySIMPLTestContext.GetFakeServiceLocation(expectedFacilityAddress, localServicePathList, subscriberID); var expectedMappedData = new CopperFacilityViewModel { Environment = "Parent_Environment", TDMSwitch = expectedTDMSwitch, GWR = expectedGWR, DSLAM = expectedDSLAM, XConnectList = expectedXConnectList, DropTermSequenceList = expectedDropTermSequenceList, ServiceLocation = expectedServiceLocation }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = (o) => session; // Fake the CurrentSubscriber.SubId call ShimCurrentSubscriber.AllInstances.SubIdGet = (myProperty) => subscriberID; // Fake the CurrentSubscriber.SubId call ShimCurrentSubscriber.AllInstances.LocationIdGet = (myProperty) => locationID; ShimCurrentSubscriber.AllInstances.DpiRegionGet = delegate { return "CT"; }; var numberOfXBoxItems = numberOfXConnectItems; var previousXBoxTerminalNames = previousXConnectTerminalNames; var currentXBoxTerminalNames = currentXConnectTerminalNames; var fakeListTerminalAssignmentDtoForXBox = mySIMPLTestContext.GetFakeListTerminalAssignmentDtoForXBox(numberOfXBoxItems, previousXBoxTerminalNames, currentXBoxTerminalNames); var fakeListTerminalAssignmentDto = fakeListTerminalAssignmentDtoForXBox.ToList(); var fakeListTerminalAssignmentDtoForDropTerm = mySIMPLTestContext.GetFakeListTerminalAssignmentDtoForDropTerm(numberOfDropTermItems, previousDropTermTerminalNames, currentDropTermTerminalNames); // swamp all of the items in the fakeListTerminalAssignmentDtoForDropTerm var tempDropTermTerminalAssignmentDto = fakeListTerminalAssignmentDtoForDropTerm[0]; fakeListTerminalAssignmentDtoForDropTerm[0] = fakeListTerminalAssignmentDtoForDropTerm[1]; fakeListTerminalAssignmentDtoForDropTerm[1] = fakeListTerminalAssignmentDtoForDropTerm[2]; fakeListTerminalAssignmentDtoForDropTerm[2] = tempDropTermTerminalAssignmentDto; fakeListTerminalAssignmentDto.AddRange(fakeListTerminalAssignmentDtoForDropTerm); var fakePairAssignmentDto = mySIMPLTestContext.GetFakePairAssignmentDto(fakeListTerminalAssignmentDto); var fakeListPairAssignmentDto = new List<PairAssignmentDto> { fakePairAssignmentDto }; var fakeCopperPlantDataDto = mySIMPLTestContext.GetFakeCopperPlantDataDto(fakeListPairAssignmentDto); var fakePlantDataDto = new PlantDataDto { CopperPlantData = fakeCopperPlantDataDto }; var fakeServiceAddressDto = mySIMPLTestContext.GetFakeServiceAddressDto(); var fakeGetFacilitiesResponseDto = mySIMPLTestContext.GetFakeGetFacilitiesResponseDto(subscriberID, fakeServiceAddressDto, fakePlantDataDto); ShimEnterpriseClient.AllInstances.GetFacilitiesDataGetFacilitiesRequestDtoHeaderArgs = delegate { return fakeGetFacilitiesResponseDto; }; ShimCurrentSubscriber.AllInstances.FacilitiesDataGet = (myProperty) => fakeGetFacilitiesResponseDto; // Fake the FacilityViewModel.ShouldShowFiber call ShimFacilityViewModel.AllInstances.GetFacilityTypeStringString = delegate { return FacilityType.Copper; }; // A single ONT EquipmentDto myEquipmentDto1 = new EquipmentDto(); myEquipmentDto1.Type = new EquipmentTypeDto(); myEquipmentDto1.Type.ONTModel = new ONTModelDto(); myEquipmentDto1.SerialNumber = "123456"; // A single Video Device EquipmentDto myEquipmentDto2 = new EquipmentDto(); myEquipmentDto2.Type = new EquipmentTypeDto(); myEquipmentDto2.Type.ONTModel = null; myEquipmentDto2.SerialNumber = "123456"; // Build Fake fakeEquipmentDto var fakeEquipmentDto = new List<EquipmentDto>(); fakeEquipmentDto.Add(myEquipmentDto1); fakeEquipmentDto.Add(myEquipmentDto2); var fakeUserDto = new UserDto() { Email = "FakeEmail", Name = "FakeName", Role = "FakeRole" }; // Fake the RosettianClient.SearchEquipment call ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySubscriberID, myUserObject) => fakeEquipmentDto; //Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; // 1st Act var result = EquipmentControllerForTests.Index(subscriberID, locationID, deviceID); // 1st set of Asserts Assert.IsNotNull(result, "EquipmentController Index returned null"); Assert.IsTrue(result is PartialViewResult, "Not a PartialViewResult"); // 2nd Act var resultPartialViewResult = (PartialViewResult)result; // 2nd set of Asserts Assert.IsNotNull(resultPartialViewResult, "Cast to PartialViewResult is null"); Assert.IsNotNull(resultPartialViewResult.Model, "Model is null"); Assert.IsTrue(resultPartialViewResult.Model is CopperFacilityViewModel, "Model not CopperFacilityViewModel"); // 3rd Act var resultPartialViewResultModel = (CopperFacilityViewModel)resultPartialViewResult.Model; // 3rd set of Asserts var successCode = "200"; Assert.AreEqual(successCode, resultPartialViewResultModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, resultPartialViewResultModel.ActionResponse.Message); // 4th Act var jss = new JavaScriptSerializer(); // 4th set of Asserts Assert.AreEqual(jss.Serialize(expectedMappedData.DropTermSequenceList), jss.Serialize(resultPartialViewResultModel.DropTermSequenceList), "DropTermSequenceList didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.DSLAM), jss.Serialize(resultPartialViewResultModel.DSLAM), "DSLAM didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.Environment), jss.Serialize(resultPartialViewResultModel.Environment), "Enviroment didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.GWR), jss.Serialize(resultPartialViewResultModel.GWR), "GWR didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.PathCount), jss.Serialize(resultPartialViewResultModel.PathCount), "PathCount didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.ServiceLocation), jss.Serialize(resultPartialViewResultModel.ServiceLocation), "ServiceLocation didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.TDMSwitch), jss.Serialize(resultPartialViewResultModel.TDMSwitch), "TDMSwitch didn't match"); Assert.AreEqual(jss.Serialize(expectedMappedData.XConnectList), jss.Serialize(resultPartialViewResultModel.XConnectList), "XConnectList didn't match"); } }
public void MyTestInitialize() { // Setup context var mySimplTestContext = new SIMPLTestContext(); HttpContext.Current = mySimplTestContext.GetHttpSession(); var userName = mySimplTestContext.GetNameFromWindowsIdentity(); CurrentUser.SetInstance(userName); RosettianUser = CurrentUser.AsUserDto(); // Setup ResidentialGatewayController BusinessFacadeforTests = DependencyResolver.Current.GetService<IBusinessFacade>(); EquipmentControllor4Test = DependencyResolver.Current.GetService<EquipmentController>(); EquipmentControllor4Test.ControllerContext = new ControllerContext(new HttpContextWrapper(HttpContext.Current), new RouteData(), EquipmentControllor4Test); }
public void Can_load_a_device_that_is_at_a_provisioned_location_with_no_subscriber() { //Setup var myContext = new SIMPLTestContext(); const string locationId = "123345"; const string deviceId = "MRCC12341234D01"; using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And a known device var fakeEquipmentDto = new List<EquipmentDto>() { new EquipmentDto(){LocationId = "123345", SerialNumber = "MRCC12341234D01", Type = new EquipmentTypeDto(){ONTModel = new ONTModelDto()}} }; // And the device is associated to a provisioned location var fakeLocationDto = myContext.GetFakeLocationDtoObject(locationId); var fakeLocationDtoList = new LocationCollectionDto() { fakeLocationDto }; // And the provisioned location is not associated to a subscriber ShimRosettianClient.AllInstances.SearchLocationsSearchFieldsDtoUserDto = (myRosettianClient, mySearchCriteria, myUserDto) => fakeLocationDtoList; ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return fakeLocationDto; }; // And the location has no devices ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUser) => fakeEquipmentDto; // And the location is not associated to a subscriber var fakeSubscriberDto = new List<SubscriberDto>(); ShimRosettianClient.AllInstances.SearchSubscribersSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUserDto) => fakeSubscriberDto; ShimDBCache.LocationsGet = delegate { return new List<Location>(); }; // When loading that device var actionResult = SubscriberControllerForTests.LoadEquipment(deviceId) as ViewResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); // And the response is successful Assert.IsNotNull(actionResult.Model, "Model was null"); var actualModel = actionResult.Model as SubscriberModel; Assert.IsNotNull(actualModel, "Model was null"); Assert.IsNotNull(actualModel.ActionResponse, "actualModel.ActionResponse was null"); Assert.AreNotEqual("500", actualModel.ActionResponse.Code, "We received a 500 code as the actionresponse."); Assert.AreEqual("Index2", actionResult.ViewName, "actionResult.RouteValues[\"action\"]"); // And the selected tab is the OSP/CPE tab Assert.AreEqual(3, actualModel.SelectedTabIndex, "The default tab was not the notes tab"); } }
public void Can_load_a_device_that_is_at_a_inventory_location() { //Setup var myContext = new SIMPLTestContext(); const string locationId = "HEADEND"; const string deviceId = "MRCC12341234D01"; using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And a known device var fakeEquipmentDto = new List<EquipmentDto>() { new EquipmentDto(){LocationId = locationId, SerialNumber = deviceId, Type = new EquipmentTypeDto(){ONTModel = new ONTModelDto()}} }; // And the device is associated to a provisioned location var fakeLocationDto = myContext.GetFakeLocationDtoObject(locationId); var fakeLocationDtoList = new LocationCollectionDto() { fakeLocationDto }; // And the provisioned location is not associated to a subscriber fakeLocationDtoList[0].HasSubscriber = false; ShimRosettianClient.AllInstances.SearchLocationsSearchFieldsDtoUserDto = (myRosettianClient, mySearchCriteria, myUserDto) => fakeLocationDtoList; // And the location has no devices ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUser) => fakeEquipmentDto; // And the location has no devices ShimRosettianClient.AllInstances.LoadLocationStringUserDto = (myRosettianClient, myLocId, myUser) => fakeLocationDto; // And the location is not associated to a subscriber var fakeSubscriberDto = new List<SubscriberDto>(); ShimRosettianClient.AllInstances.SearchSubscribersSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUserDto) => fakeSubscriberDto; // When loading that device var actionResult = SubscriberControllerForTests.LoadEquipment(deviceId) as ViewResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); // And the response is successful Assert.IsNotNull(actionResult.Model, "Model was null"); var actualModel = actionResult.Model as SubscriberModel; Assert.IsNotNull(actualModel, "Model was null"); Assert.IsNotNull(actualModel.ActionResponse, "ActionResponse was null"); Assert.IsNotNull(actualModel.ActionResponse.Code, "actualModelActionResponse.Code was null"); Assert.AreNotEqual("500", actualModel.ActionResponse.Code, "We received a 500 code as the actionresponse."); Assert.AreEqual("Index2", actionResult.ViewName, "actionResult.RouteValues[\"action\"]"); // And the selected tab is the OSP/CPE tab Assert.AreEqual(3, actualModel.SelectedTabIndex, "The default tab was not the notes tab"); // And no equipment is returned Assert.IsTrue((actualModel.SubEquipmentModel.ONTList.Count == 0 && actualModel.SubEquipmentModel.VideoDeviceList.Count == 0), "Devices were returned in the model"); //And the Loaded Device Id is the same as the searched for device Assert.AreEqual(deviceId, actualModel.SubLocationModel.LoadedDeviceID, "The returned loaded device ID was different then the one passed in"); } }
public void User_receives_an_error_when_trying_to_load_an_unknown_location() { //Setup var myContext = new SIMPLTestContext(); const string locationId = "9999999"; using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And an unknown location var fakeSubscriberDto = new List<SubscriberDto>(); ShimRosettianClient.AllInstances.SearchSubscribersSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUserDto) => fakeSubscriberDto; var fakeLocationDto = myContext.GetFakeLocationDtoObject(locationId); var fakeValidationFault = new ValidationFaultDto() { Details = new List<ValidationDetailDto>() { new ValidationDetailDto() { Key = "NA", Message = "Error Message", Tag = "NA" } } }; ShimRosettianClient.AllInstances.LoadLocationStringUserDto = (myRosettianClient, myLocationId, myUserDto) => { throw new FaultException<ValidationFaultDto>(fakeValidationFault); }; // When loading that location var actionResult = SubscriberControllerForTests.LoadLocation(locationId) as PartialViewResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); // And the response is an error Assert.AreEqual("Error Message", actionResult.ViewData["error"], string.Format("The response should have been Error Message, but was {0}", actionResult.ViewData["error"])); } }
public void Index_User_Is_Shown_Index2_View_With_A_Single_ONT_And_A_Single_RG() { using (ShimsContext.Create()) { // Arrange ShimRosettianClient.AllInstances.LoadLocationStringUserDto = delegate { return new LocationDto(); }; ShimRosettianClient.AllInstances.GetServicesUserDto = delegate { return new ServiceCollectionDto(); }; const string subscriberID = "999999999999"; const string subscriberContactPhone = "9999999999"; const string firstName = "Test"; const string lastName = "Account"; const string deviceID = "11111111"; var myContext = new SIMPLTestContext(); // Build Fake UserDto var fakeUserDto = myContext.GetFakeUserDtoObject(); // Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentUser.GetInstance = () => new ShimCurrentUser { UniqueIdGet = () => "abc123", }; ShimCurrentUser.AllInstances.RolesGet = delegate { return new List<int> { 1 }; }; // Shim Permissions.UserHasGrant ShimPermissions.UserHasGrantGrant = delegate { return true; }; // Shim feature flag ShimFeatureFlags.IsEnabledString = delegate { return true; }; // Build Fake AccountDto var fakeAccountDto = myContext.GetFakeAccountDtoObject(); // Build Fake CustomFieldDto var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); // Build Fake SubscriberDto var fakeSubscriberDto = myContext.GetFakeSubscriberDto(subscriberID, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto); // Build Fake PhoneNumberAsIdDto (internally builds the Fake TelephoneNumberDto) var fakePhoneNumberAsIdDto = myContext.GetFakePhoneNumberAsIdDto(subscriberContactPhone); // Build Fake BillingAccountIdDto var fakeBillingAccountIdDto = myContext.GetFakeBillingAccountIdDto(subscriberID, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountIdDto var fakeCustomerAccountIdDto = myContext.GetFakeCustomerAccountIdDto(subscriberID, fakePhoneNumberAsIdDto); // Build Fake CustomerAccountDto (internaly builds the Fake IndividualNameDto, // the Fake IndividualDto, and the Fake CustomerDto) var fakeCustomerAccountDto = myContext.GetFakeCustomerAccountDto(firstName, lastName, subscriberID, fakeBillingAccountIdDto, fakeCustomerAccountIdDto); // A single ONT var fakeEquipmentTypeDtoONT = new EquipmentTypeDto { ONTModel = new ONTModelDto(), Category = EquipmentCategoryDto.ONTDataPort }; var myEquipmentDto1 = new EquipmentDto() { Type = fakeEquipmentTypeDtoONT }; // A single ONT var fakeEquipmentTypeDtoRG = new EquipmentTypeDto { ONTModel = new ONTModelDto(), Category = EquipmentCategoryDto.RGDataPort }; var myEquipmentDto2 = new EquipmentDto() { Type = fakeEquipmentTypeDtoRG }; // A single Video Device var fakeEquipmentTypeDtoVideoDevice = new EquipmentTypeDto { ONTModel = null }; var myEquipmentDto3 = new EquipmentDto() { Type = fakeEquipmentTypeDtoVideoDevice }; fakeSubscriberDto.Accounts[0].Equipment = new EquipmentCollectionDto(); fakeSubscriberDto.Accounts[0].Equipment.Add(myEquipmentDto1); fakeSubscriberDto.Accounts[0].Equipment.Add(myEquipmentDto2); fakeSubscriberDto.Accounts[0].Equipment.Add(myEquipmentDto3); // Build Fake CompositeSubscriber var fakeCompositeSubscriber = new CompositeSubscriber() { SubscriberTriad = fakeSubscriberDto, SubscriberDpi = fakeCustomerAccountDto }; // Fake the BusinessFacade.LoadCompositeSubscriber call ShimBusinessFacade.AllInstances.LoadCompositeSubscriberStringStringUserDto = delegate { return fakeCompositeSubscriber; }; // Build Fake fakeEquipmentDto var fakeEquipmentDto = new List<EquipmentDto>(); fakeEquipmentDto.Add(myEquipmentDto1); fakeEquipmentDto.Add(myEquipmentDto2); fakeEquipmentDto.Add(myEquipmentDto3); // Fake the RosettianClient.SearchEquipment call ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySubscriberID, myUserObject) => fakeEquipmentDto; // A single ONT var fakeONT = new ONT { Type = fakeEquipmentTypeDtoONT }; // A single RG var fakeRG = new ONT { Type = fakeEquipmentTypeDtoRG }; var fakeONTAndRGList = new List<ONT>(); fakeONTAndRGList.Add(fakeONT); fakeONTAndRGList.Add(fakeRG); var fakeONTList = new List<ONT>(); fakeONTList.Add(fakeONT); var fakeRGList = new List<ONT>(); fakeRGList.Add(fakeRG); // Fake the EquipmentExtension.ToONTList call SIMPL.Areas.Common.Extensions.Fakes.ShimEquipmentExtension.ToONTListIEnumerableOfEquipmentDto = (myEquipmentList) => { if (myEquipmentList != null) { var items = myEquipmentList.ToList(); if (items.Any()) { if (items.Count == 2) { return fakeONTAndRGList; } if (items[0].Type.Category == EquipmentCategoryDto.ONTDataPort) { return fakeONTList; } if (items[0].Type.Category == EquipmentCategoryDto.RGDataPort) { return fakeRGList; } } } return new List<ONT>(); }; // A single Video Device var fakeVideoDevice = new SerializableVideoDevice(); var fakeVideoDeviceList = new List<SerializableVideoDevice>(); fakeVideoDeviceList.Add(fakeVideoDevice); // Fake the EquipmentExtension.ToVideoDeviceList call ShimEquipmentExtension.ToVideoDeviceListIEnumerableOfEquipmentDto = (myVideoDeviceList) => fakeVideoDeviceList; var currentSubscriber = new ShimCurrentSubscriber { SubIdGet = () => "SubId", ProvisionedServicesListGet = () => new List<ServiceDto>() }; ShimCurrentSubscriber.GetInstance = () => currentSubscriber; // Fake the CurrentSubscriber.SetInstance call ShimCurrentSubscriber.SetInstanceCompositeSubscriberSubscriberModel = (myCompositeSubscriber, mySubscriberModel) => { }; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.DataProductTypeGet = (myResult) => SubscriberEnums.DataProductType.Ftth; // Fake the CurrentSubscriber.VideoProductType call ShimCurrentSubscriber.AllInstances.VideoProductTypeGet = (myResult) => SubscriberEnums.VideoProductType.FiberRf; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.VoiceProductTypeGet = (myResult) => SubscriberEnums.VoiceProductType.FiberPots; // Fake the CurrentSubscriber.DataProductType call ShimCurrentSubscriber.AllInstances.StateGet = (myResult) => "CT"; ShimCurrentUser.RetrieveUserRolesString = (myUniqueId) => new List<int>() { 1 }; //Fake DB call to get Headends var headends = new List<HeadEnd>() { new HeadEnd() { EntityKey = new EntityKey(), headend_code = "1", headend_loc = "1", headend_name = "1", headend_nbr = 1, location_id = "1", location_nbr = 1 } }; ShimDBCache.HeadEndCodesGet = delegate { return headends; }; //Fake Line Results DB Call. var testResultsDbSet = new ShimDbSet<test_results>(); testResultsDbSet.Bind(new List<test_results>().AsQueryable()); ShimLineTestEntities.AllInstances.test_resultsGet = delegate { return testResultsDbSet; }; // 1st Act var result = SubscriberControllerForTests.Index(subscriberID, deviceID) as ViewResult; // 1st set of Asserts Assert.IsNotNull(result, "SubscriberController Index method returned null"); Assert.IsNotNull(result.ViewName, "result.ViewName method is null"); const string expectedViewName = "Index2"; Assert.IsTrue(expectedViewName == result.ViewName, "Expected: " + expectedViewName + ", Actual: " + result.ViewName); Assert.IsTrue(result.ViewName.Equals(expectedViewName)); Assert.IsTrue(result.Model is SubscriberModel, "Not SubscriberModel"); // 2nd Act var testSubscriberModel = result.Model as SubscriberModel; // 2nd set of Asserts var successCode = "200"; Assert.AreEqual(successCode, testSubscriberModel.ActionResponse.Code, "Test threw an exception {0}{0}{1}", Environment.NewLine, testSubscriberModel.ActionResponse.Message); var jss = new JavaScriptSerializer(); var expectedModel = fakeCompositeSubscriber.MapToSubscriberModel(); expectedModel.SubEquipmentModel = new SubscriberEquipmentModel { ONTList = fakeONTAndRGList, ONTOnlyList = fakeONTList, RGOnlyList = fakeRGList, VideoDeviceList = fakeVideoDeviceList, AccessDeviceList = fakeONTAndRGList, LoadedSubID = subscriberID, LoadedLocID = expectedModel.SubLocationModel.LocationID, WanIpAddress = string.Empty, MaxStb = string.Empty }; expectedModel.SubLocationModel.LoadedDeviceID = deviceID; Assert.AreEqual(jss.Serialize(expectedModel.ActionResponse), jss.Serialize(testSubscriberModel.ActionResponse), "SubscriberModel"); Assert.AreEqual(jss.Serialize(expectedModel.SubDetailsModel), jss.Serialize(testSubscriberModel.SubDetailsModel), "SubscriberDetailsModel"); Assert.AreEqual(jss.Serialize(expectedModel.SubLocationModel), jss.Serialize(testSubscriberModel.SubLocationModel), "SubscriberLocationModel"); // Since deviceID is not null, check to verify that LoadedDeviceID has the expected value Assert.AreEqual(deviceID, expectedModel.SubLocationModel.LoadedDeviceID, "LoadedDeviceID should not be string.Empty is deviceID is {0}", deviceID); Assert.AreEqual(jss.Serialize(expectedModel.SubServicesModel), jss.Serialize(testSubscriberModel.SubServicesModel), "SubscriberServicesModel"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.ONTList), jss.Serialize(testSubscriberModel.SubEquipmentModel.ONTList), "SubscriberEquipmentModel ONTList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.ONTOnlyList), jss.Serialize(testSubscriberModel.SubEquipmentModel.ONTOnlyList), "SubscriberEquipmentModel ONTOnlyList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.RGOnlyList), jss.Serialize(testSubscriberModel.SubEquipmentModel.RGOnlyList), "SubscriberEquipmentModel RGOnlyList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel.VideoDeviceList), jss.Serialize(testSubscriberModel.SubEquipmentModel.VideoDeviceList), "SubscriberEquipmentModel VideoDeviceList"); Assert.AreEqual(jss.Serialize(expectedModel.SubEquipmentModel), jss.Serialize(testSubscriberModel.SubEquipmentModel), "SubscriberEquipmentModel entire object"); } }
public void When_searching_by_location_can_load_a_subscriber() { //Setup var myContext = new SIMPLTestContext(); const string subscriberID = "999999999999"; const string subscriberContactPhone = "9999999999"; const string firstName = "Test"; const string lastName = "Account"; const string locationId = "9999999"; using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // And a known location var fakeAccountDto = myContext.GetFakeAccountDtoObject(); fakeAccountDto.Location = myContext.GetFakeLocationDtoObject(locationId); // And the location is associated to a subscriber var fakeCustomFieldDto = myContext.GetFakeCustomFieldDto(); var fakeSubscriberDto = new List<SubscriberDto>(); fakeSubscriberDto.Add(myContext.GetFakeSubscriberDto(subscriberID, firstName, lastName, subscriberContactPhone, fakeCustomFieldDto, fakeAccountDto)); ShimRosettianClient.AllInstances.SearchSubscribersSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUserDto) => fakeSubscriberDto; // When loading that location var actionResult = SubscriberControllerForTests.LoadLocation(locationId) as RedirectToRouteResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); Assert.IsNotNull(actionResult.RouteValues, "actionResult.RouteValues is null"); // And the response is successful // And the response redirects them to the subscriber index Assert.AreEqual(2, actionResult.RouteValues.Count, "actionResult.RouteValues.Count"); Assert.AreEqual("Index", actionResult.RouteValues["action"], "actionResult.RouteValues[\"action\"]"); // And the usi returned matches the billing usi Assert.AreEqual(subscriberID, actionResult.RouteValues["subID"], "actionResult.RouteValues[\"subID\"]"); } }
public void MyTestInitialize() { // Helper code to get the HttpContext var mySIMPLTestContext = new SIMPLTestContext(); HttpContext.Current = mySIMPLTestContext.GetHttpSession(); // Helper Code to get the user logged into Windows var userName = mySIMPLTestContext.GetNameFromWindowsIdentity(); // Calling actual production code to set the instance for this username CurrentUser.SetInstance(userName); // Calling actual production code to get the Rosettian User Object RosettianUser = CurrentUser.AsUserDto(); BusinessFacadeforTests = DependencyResolver.Current.GetService<IBusinessFacade>(); SubscriberHelperforTests = DependencyResolver.Current.GetService<SubscriberHelper>(); // Set up the LocationController LocationController4Tests = DependencyResolver.Current.GetService<LocationController>(); LocationController4Tests.ControllerContext = new ControllerContext(new HttpContextWrapper(HttpContext.Current), new RouteData(), LocationController4Tests); }
public void RefreshDevices_HappyPath() { //Setup var myContext = new SIMPLTestContext(); using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; ShimCurrentSubscriber.AllInstances.LocationIdGet = (currentSubscriber) => "FakeLocationId"; ShimCurrentSubscriber.AllInstances.MaxStbGet = (currentSubscriber) => "4"; // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = (o) => session; ShimCurrentSubscriber.SessionInstanceGet = () => new ShimCurrentSubscriber(); // A single ONT EquipmentDto myEquipmentDto1 = new EquipmentDto(); myEquipmentDto1.Status = "ACTIVE"; myEquipmentDto1.Type = new EquipmentTypeDto(); myEquipmentDto1.Type.ONTModel = new ONTModelDto(); myEquipmentDto1.Type.ONTModel.Model = "Model"; myEquipmentDto1.SerialNumber = "SerialNumber1"; // A single Video Device EquipmentDto myEquipmentDto2 = new EquipmentDto(); myEquipmentDto2.Status = "IGNORE"; myEquipmentDto2.Type = new EquipmentTypeDto(); myEquipmentDto2.Type.ONTModel = null; myEquipmentDto2.SerialNumber = "SerialNumber2"; var equipments = new List<EquipmentDto>(); equipments.Add(myEquipmentDto1); equipments.Add(myEquipmentDto2); // Fake the RosettianClient.SearchEquipment call ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySubscriberID, myUserObject) => equipments; // When loading that device var actionResult = SubscriberControllerForTests.RefreshDevices() as PartialViewResult; Assert.IsNotNull(actionResult, "ViewResult is null."); var equipmentModel = actionResult.Model as SubscriberEquipmentModel; Assert.IsNotNull(equipmentModel, "ViewModel is null."); Assert.IsNotNull(equipmentModel.ONTList, "ONTList is null"); Assert.IsTrue(equipmentModel.ONTList.Count >= 0); Assert.IsNotNull(equipmentModel.VideoDeviceList, "VideoDeviceList is null"); Assert.IsTrue(equipmentModel.VideoDeviceList.Count >= 0); } }
public void User_receives_success_message_when_trying_to_lock_DSLAM_when_the_port_state_is_Unknown() { using (ShimsContext.Create()) { // ARRANGE const DslamPortEnable newLockState = DslamPortEnable.PortStateUnknown; var servicesControllerForTest = ServicesControllerForTests; var testContext = new SIMPLTestContext(); // fake local current subscriber object var fakeCurrentSubscriber = new FakeCurrentSubscriber(); // fake SubscriberDto var fakeSubscriberData = TestContext.DataRow["MapToSubscriberDtoAsJSON"]; Assert.IsNotNull(fakeSubscriberData); var fakeSubscriberDtoAsJson = fakeSubscriberData.ToString().Replace("\r\n", ""); var fakeSubscriberDto = JsonConvert.DeserializeObject<SubscriberDto>(fakeSubscriberDtoAsJson, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore }); // Create copy of minimal DSL provisioned services list for use as expected services reference. var expectedServicesList = fakeSubscriberDto.Accounts.First().Services.ToList(); // Add DSLOFF to expected as this is the only additional service expected. expectedServicesList.Add(new ServiceDto { ClassName = "OVERRIDE", Name = "DSLOFF", Description = "SUSPEND DSL PORT" }); // fake CurrentSubscriber and Rosettian method calls ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber(); ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = delegate { return fakeSubscriberDto; }; ShimCurrentUser.AsUserDto = testContext.GetFakeUserDtoObject; ShimRosettianClient.AllInstances.UpdateSubscriberSubscriberDtoBooleanUserDto = delegate { return true; }; ShimCurrentSubscriber.UpdateSubscriberDto = delegate(SubscriberDto subscriber) { fakeCurrentSubscriber.SubIpType = subscriber.GetIPType(); fakeCurrentSubscriber.ProvisionedServicesList = subscriber.Accounts.First().Services; }; ShimSubscriberExtension.MapToSubDetailsModelCurrentSubscriber = delegate { return new SubscriberDetailsModel { IPType = fakeCurrentSubscriber.SubIpType }; }; // ACT var actualResult = servicesControllerForTest.UpdateDslamPortGate(newLockState); // ASSERT Assert.IsNotNull(actualResult); var actualJsonResult = actualResult as JsonResult; Assert.IsNotNull(actualJsonResult); // verify the returned Json dynamic actualJson = actualJsonResult.Data; var status = actualJson.status as string; Assert.AreEqual("success", status, "UpdateDslamPortGate() returned Json has unexpected failing result status"); Assert.IsTrue(expectedServicesList.SequenceEqual(fakeCurrentSubscriber.ProvisionedServicesList, new ServiceComparer())); } }
public void Remarks_HappyPath() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = (o) => session; var remarks = new List<PlantRemarkDto>(); remarks.Add(new PlantRemarkDto { ServiceOrderNumber = "#1234", RemarkText = "Remarks" }); ShimEnterpriseClient.AllInstances.GetPlantRemarksGetPlantRemarksRequestDtoHeaderArgs = delegate { return remarks; }; var accountsController = DependencyResolver.Current.GetService<AccountsController>(); var result = accountsController.Remarks("usi","tn"); Assert.IsInstanceOfType(result, typeof(PartialViewResult)); Assert.IsInstanceOfType(result.Model, typeof (IEnumerable<string>)); var remarkList = new List<string>(((IEnumerable<string>) result.Model)); Assert.IsTrue(remarkList[0].Contains("#1234") && remarkList[0].Contains("Remarks")); } }
public void RefreshSubscriber_ValidateErrorScenario() { using (ShimsContext.Create()) { var myContext = new SIMPLTestContext(); var currentSubscriber = new ShimCurrentSubscriber(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // current sub currentSubscriber.FoundInBillingGet = () => true; var subModel = new SubscriberDetailsModel() { Name = "JAMES SMITH", USI = "USIDOESNOTEXIST", CurrentServiceStatus = true }; currentSubscriber.NameGet = () => subModel.Name; currentSubscriber.SubIdGet = () => subModel.USI; currentSubscriber.AccountTypeGet = () => subModel.AccountType; currentSubscriber.ServiceEnabledGet = () => subModel.CurrentServiceStatus; // fakes ShimCurrentSubscriber.GetInstance = () => currentSubscriber; ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = (myCurrentSubscriber) => new SubscriberDto(); // fake ROZ PerformSubscriberOperation exception var errorMessage = string.Format("Subscriber Id {0} does not exist", subModel.USI); ShimRosettianClient.AllInstances.PerformSubscriberOperationStringSubscriberOperationDtoUserDto = (myRosettianClient, mySubId, mySubscriberOperationDto, myUserDto) => { throw new Exception(errorMessage); }; // expected json result var expectedJsonResult = new { status = "error", errorMessage = string.Format("Error refreshing subscriber: {0}", errorMessage) }.ToJSON(); // call RefreshSubscriber action method var actualResult = SubscriberControllerForTests.RefreshSubscriber() as JsonResult; // validate result Assert.IsNotNull(actualResult, "JsonResult returned is null"); Assert.IsNotNull(actualResult.Data, "JsonResult Data returned is null"); Assert.AreEqual(expectedJsonResult, actualResult.Data.ToJSON()); } }
public void SyncPlantData_SadPath() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; //Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; ShimCurrentUser.AsUserDto = () => new SIMPLTestContext().GetFakeUserDtoObject(); // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; ShimHttpContext.AllInstances.SessionGet = (o) => session; ShimErrorLoggingService.AllInstances.LogErrorException = (myClient, myException) => { }; // Expected Result var expectedResult = new { status = "error", errorMessage = "There was an error while updating the data -- please try again" }; var fakeCurrentSubscriber = new ShimCurrentSubscriber { DpiRegionGet = () => "CT" }; ShimCurrentSubscriber.SessionInstanceGet = () => fakeCurrentSubscriber; // Call FacilitiesController SyncPlantData var actualResult = FacilitiesControllerForTests.SyncPlantData() as JsonResult; // Test Validation Assert.IsNotNull(actualResult, "JsonResult returned is null"); Assert.IsNotNull(actualResult, "JsonResult Data returned is null"); Assert.AreEqual(expectedResult.ToString(), actualResult.Data.ToString()); } }
public void RefreshSubscriber_ValidateSuccessScenario() { using (ShimsContext.Create()) { var myContext = new SIMPLTestContext(); var currentSubscriber = new ShimCurrentSubscriber(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // current sub currentSubscriber.FoundInBillingGet = () => true; var subModel = new SubscriberDetailsModel() { Name = "JAMES SMITH", USI = "123456789", AccountType = AccountTypeDto.Residential, CurrentServiceStatus = true }; currentSubscriber.NameGet = () => subModel.Name; currentSubscriber.SubIdGet = () => subModel.USI; currentSubscriber.AccountTypeGet = () => subModel.AccountType; currentSubscriber.ServiceEnabledGet = () => subModel.CurrentServiceStatus; // fakes ShimCurrentSubscriber.GetInstance = () => currentSubscriber; ShimSubscriberExtension.MapToSubscriberCurrentSubscriber = (myCurrentSubscriber) => new SubscriberDto(); // fake ROZ PerformSubscriberOperation result ShimRosettianClient.AllInstances.PerformSubscriberOperationStringSubscriberOperationDtoUserDto = (myRosettianClient, mySubId, mySubscriberOperationDto, myUserDto) => true; // expected json result var expectedJsonResult = new { status = "valid", message = string.Format("Successfully refreshed subscriber for USI [{0}]", subModel.USI) }.ToJSON(); // call RefreshSubscriber action method var actualResult = SubscriberControllerForTests.RefreshSubscriber() as JsonResult; // validate result Assert.IsNotNull(actualResult, "JsonResult returned is null"); Assert.IsNotNull(actualResult.Data, "JsonResult Data returned is null"); Assert.AreEqual(expectedJsonResult, actualResult.Data.ToJSON()); } }
public void MyTestInitialize() { // Setup context var mySimplTestContext = new SIMPLTestContext(); HttpContext.Current = mySimplTestContext.GetHttpSession(); // verified that uitestuser has a valid email address in ASPP CurrentUser.SetInstance("uitestuser"); RosettianUser = CurrentUser.AsUserDto(); _mailersInformationEntitiesTestRepositoryForTests = new MailersInformationEntitiesTestRepository(); EquipmentOrderControllerForTests = DependencyResolver.Current.GetService<EquipmentOrderController>(); EquipmentOrderControllerForTests.ControllerContext = new ControllerContext(new HttpContextWrapper(HttpContext.Current), new RouteData(), EquipmentOrderControllerForTests); var key = "FiosEquipmentCatalogId"; FiOSCatalogId = ConfigurationManager.AppSettings[key]; if (FiOSCatalogId == null) { throw new Exception(string.Format("AppSettings key \"{0}\" is missing", key)); } key = "UverseEquipmentCatalogId"; UVerseCatalogId = ConfigurationManager.AppSettings[key]; if (UVerseCatalogId == null) { throw new Exception(string.Format("AppSettings key \"{0}\" is missing", key)); } key = "TivoEquipmentCatalogId"; TiVoEquipmentCatalogId = ConfigurationManager.AppSettings[key]; if (TiVoEquipmentCatalogId == null) { throw new Exception(string.Format("AppSettings key \"{0}\" is missing", key)); } key = "TivoReturnMailerCatalogId"; TiVoReturnMailerCatalogId = ConfigurationManager.AppSettings[key]; if (TiVoReturnMailerCatalogId == null) { throw new Exception(string.Format("AppSettings key \"{0}\" is missing", key)); } key = "TivoRemoteCatalogId"; TiVoRemoteCatalogId = ConfigurationManager.AppSettings[key]; if (TiVoReturnMailerCatalogId == null) { throw new Exception(string.Format("AppSettings key \"{0}\" is missing", key)); } }
public void User_can_load_a_location_that_is_not_associated_to_a_subscriber_with_no_devices() { //Setup var myContext = new SIMPLTestContext(); const string locationId = "9999999"; using (ShimsContext.Create()) { // Given a user var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; // Fake the session state for HttpContext // http://blog.christopheargento.net/2013/02/02/testing-untestable-code-thanks-to-ms-fakes/ var session = new ShimHttpSessionState(); session.ItemGetString = (key) => { if (key == "LoadedLocation") return null; return null; }; // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = (o) => session; ShimCurrentSubscriber.UpdateSubscriberLocationModel = delegate { }; // And a known location var fakeLocationDto = myContext.GetFakeLocationDtoObject(locationId); ShimRosettianClient.AllInstances.LoadLocationStringUserDto = (myRosettianClient, myLocationId, myUserDto) => fakeLocationDto; // And the location has no devices ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUser) => new List<EquipmentDto>(); // And the location is not associated to a subscriber var fakeSubscriberDto = new List<SubscriberDto>(); ShimRosettianClient.AllInstances.SearchSubscribersSearchFieldsDtoUserDto = (myRosettianClient, mySearchFields, myUserDto) => fakeSubscriberDto; // When loading that location var actionResult = SubscriberControllerForTests.LoadLocation(locationId) as ViewResult; // Then the user receives a response Assert.IsNotNull(actionResult, "SubscriberController LoadLocation method returned null"); // And the response is successful Assert.AreEqual("Index2", actionResult.ViewName, "actionResult.RouteValues[\"action\"]"); // And the response returns the location information var expectedModel = fakeLocationDto.MapToSubscriberModel(); var actualModel = actionResult.Model as SubscriberModel; Assert.IsNotNull(actualModel, "The model returned was empty"); Assert.IsNotNull(actualModel.SubLocationModel, "The sub location model returned was empty"); Assert.IsTrue(expectedModel.SubLocationModel.Address1.Equals(actualModel.SubLocationModel.Address1), "The Address was different"); // And the location matches the requested location Assert.AreEqual(locationId, actualModel.SubLocationModel.LocationID, "Location Id did not match the one that was searched for."); // And the notes tab is the selected tab Assert.AreEqual(5, actualModel.SelectedTabIndex, "The default tab was not the notes tab"); } }