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 ActivateResidentialGateway_ValidateSuccessScenario() { using (ShimsContext.Create()) { // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; // 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 equipmentDto = new CompositeEquipment(); ShimBusinessFacade.AllInstances.LoadCompositeEquipmentSearchFieldsDtoUserDto = (facade, dto, arg3) => equipmentDto; ShimCurrentSubscriber.AllInstances.SubIdGet = o => "89451"; ShimCurrentSubscriber.AllInstances.LocationIdGet = o => "0000453"; ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => "12:12:12:12"; ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto(); ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { }; ShimRosettianClient.AllInstances.ActivateResidentialGatewayStringStringUserDto = (client, locationId, myDeviceId, userDto) => true; ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (client, searchFields, userDto) => new List<EquipmentDto>(); var deviceId = "PACE1122333"; // create phone controller instance var controller = DependencyResolver.Current.GetService<ResidentialGatewayController>(); var result = controller.ActivateResidentialGateway(deviceId, null); // 1st Assert Assert.IsNotNull(result, "ResidentialGateway.Update() returned null"); var jsonResult = result as JsonResult; // 2nd Assert Assert.IsNotNull(jsonResult, "Cast to JsonResult result in null result"); // 3rd Assert Assert.IsNotNull(jsonResult.Data, "jsonResult.Data is null"); // 4th Assert Assert.AreEqual("valid", ((dynamic)jsonResult.Data).status, "Invalid status code returned from controller"); } }
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 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 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 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 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 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 Index_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 HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // SIMPL.Session.Fakes.ShimCurrentSubscriber.SessionInstanceGet = () => new ShimCurrentSubscriber(); // 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; //Expected result const string expectedIpAddressLabel = "WAN_IP_ADDR"; const string expectedIpAddressValue = "10.143.22.1"; const string expectedBaseModelValue = "A5550"; const string expectedSerialNumber = "PACE99999991"; const string expectedUnitAddress = "0D-U9-M6-D2-D7"; const string expectedLocationId = "locId"; const string expectedRoomLocationLabel = "ROOM_LOCATION"; const string expectedRoomLocationValue = "TEST ROOM"; const string expectedMacAddressLable = "ENET_MAC_ADDR"; const string expectedMacAddressValue = "A0B1C2D3E4F5"; var customFieldsDto = new List<CustomFieldDto>(); var expectedIpAddressCustomField = new CustomFieldDto { Label = expectedIpAddressLabel, Value = expectedIpAddressValue, }; customFieldsDto.Add(expectedIpAddressCustomField); var expectedRoomLocationCustomField = new CustomFieldDto { Label = expectedRoomLocationLabel, Value = expectedRoomLocationValue }; customFieldsDto.Add(expectedRoomLocationCustomField); var expectedMacAddressCustomField = new CustomFieldDto { Label = expectedMacAddressLable, Value = expectedMacAddressValue }; customFieldsDto.Add(expectedMacAddressCustomField); var customFieldsCollection = new CustomFieldCollectionDto { expectedIpAddressCustomField, expectedRoomLocationCustomField, expectedMacAddressCustomField }; var RgType = new EquipmentTypeDto { ONTModel = new ONTModelDto { BaseModel = expectedBaseModelValue }, Category = EquipmentCategoryDto.RGDataPort }; var IPVideoType = new EquipmentTypeDto { ONTModel = new ONTModelDto { BaseModel = expectedBaseModelValue }, Category = EquipmentCategoryDto.DVR, IptvCapable = true }; var equipmentDataDto = new EquipmentDto { SerialNumber = expectedSerialNumber + "D01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = RgType, Status = "ACTIVE" }; var equipmentPhoneDto = new EquipmentDto { SerialNumber = expectedSerialNumber + "P01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = RgType, Status = "ACTIVE" }; var ipVideoDevice = new EquipmentDto { SerialNumber = expectedSerialNumber + "P01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = IPVideoType, Status = "ACTIVE" }; var searchEquipmentsResult = new List<EquipmentDto>(); searchEquipmentsResult.Add(equipmentDataDto); searchEquipmentsResult.Add(equipmentPhoneDto); searchEquipmentsResult.Add(ipVideoDevice); var loadSubscriberPhonesResult = new List<PhoneDto>(); // shim CurrentSubscriber WanIpAddress ShimCurrentSubscriber.GetInstance = () => new ShimCurrentSubscriber { WanIpAddressGet = () => expectedIpAddressValue, ProvisionedPhonesListGet = () => loadSubscriberPhonesResult }; ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myTestClient, mySearchFields, myUserDto) => searchEquipmentsResult; equipmentDataDto.CustomFields = customFieldsDto; ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => equipmentDataDto; ShimRosettianClient.AllInstances.GetCustomFieldsUserDto = (myTestClient, myUserDto) => customFieldsCollection; ShimVirtualPathUtility.ToAbsoluteString = (myTestString) => @"http://testapp/images/DVR.png"; ShimDBCache.LocationsGet = delegate { return new List<Location>(); }; var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); var result = residentialController.Index("subID", "locID", "devID") as PartialViewResult ?? new PartialViewResult(); Assert.IsNotNull(result, "Partial view result returned is null."); Assert.IsTrue(result.ViewName.Equals("Index"), "View names do not match."); Assert.AreEqual(expectedIpAddressValue, ((ResidentialGatewayModel)(result.Model)).IPAddress, "Expected IP does not match with actual IP."); Assert.AreEqual(expectedUnitAddress, ((ResidentialGatewayModel)(result.Model)).UnitAddress, "Expected UnitAddress does not match with actual Unit Address."); Assert.AreEqual(expectedMacAddressValue, ((ResidentialGatewayModel)(result.Model)).MacAddress, "Expected MacAddress does not match with actual Mac Address."); Assert.AreEqual(expectedBaseModelValue, ((ResidentialGatewayModel)(result.Model)).Model, "Expected Model number does not match with actual Model number."); Assert.AreEqual(expectedSerialNumber, ((ResidentialGatewayModel)(result.Model)).ID, "Expected serial number does not match with actual serial number."); Assert.IsTrue(((ResidentialGatewayModel)(result.Model)).VideoDevices.Any(), "No video devices found."); Assert.IsTrue(((ResidentialGatewayModel)(result.Model)).VideoDevices.First().Type.Equals("DVR"), "IP Video device type mismatch."); Assert.IsTrue(((ResidentialGatewayModel)(result.Model)).VideoDevices.First().RoomLocation.Any(), "No Room locations found."); } }
public void If_TiVo_Only_Subscriber_Redirect_to_RF_Video_Partial() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() ShimCurrentUser.AsUserDto = () => fakeUserDto; // Fake the HttpContext var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; // SIMPL.Session.Fakes.ShimCurrentSubscriber.SessionInstanceGet = () => new ShimCurrentSubscriber(); // Fake the session state for HttpContext var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") { return null; } if (s == "Subscriber") { return new List<string>(); } return null; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = o => session; ShimCurrentSubscriber.AllInstances.HasTivoServiceOnlyGet = delegate { return true; }; var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); var result = residentialController.Index("subID", "locID", "devID"); Assert.IsNotNull(result); Assert.IsTrue(result is RedirectToRouteResult); var action = result as RedirectToRouteResult; Assert.AreEqual("LoadVideoMgmt", action.RouteValues["action"], string.Format("The redirect should have been to the LoadVideoMgmt action, instead it redirected to {0}", action.RouteValues["action"])); Assert.AreEqual("VideoDevice", action.RouteValues["controller"], string.Format("The redirect should have been to the VideoDevice controller, instead it redirected to {0}", action.RouteValues["controller"])); } }
public void ActivateResidentialGateway_hasNoMainRg_hasListOtherRgs_hasIpVideoDevice_ValidateSuccessScenario() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() 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; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = o => session; //Expected result const string expectedIpAddressLabel = "WAN_IP_ADDR"; const string expectedIpAddressValue = "10.143.22.1"; const string expectedBaseModelValue = "A5550"; const string expectedSerialNumber = "PACE99999991"; const string expectedUnitAddress = "001E46"; const string expectedLocationId = "123456789"; const string expectedRoomLocationLabel = "ROOM_LOCATION"; const string expectedRoomLocationValue = "TEST ROOM"; const string expectedMacAddressLable = "ENET_MAC_ADDR"; const string expectedMacAddressValue = "A0B1C2D3E4F5"; const string expectedSelectedRoomLabel = "SELECTED_ROOM"; const string expectedSelectedRoomValue = "MASTER BED ROOM"; var customFieldsDto = new List<CustomFieldDto>(); // RG custom fields var expectedIpAddressCustomField = new CustomFieldDto { Label = expectedIpAddressLabel, Value = expectedIpAddressValue, }; customFieldsDto.Add(expectedIpAddressCustomField); var expectedMacAddressCustomField = new CustomFieldDto { Label = expectedMacAddressLable, Value = expectedMacAddressValue }; customFieldsDto.Add(expectedMacAddressCustomField); // ip video device custom fields var expectedRoomLocationCustomField = new CustomFieldDto { Label = expectedRoomLocationLabel, Value = expectedRoomLocationValue }; customFieldsDto.Add(expectedRoomLocationCustomField); var expectedSelectedRoomCustomField = new CustomFieldDto { Label = expectedSelectedRoomLabel, Value = expectedSelectedRoomValue }; customFieldsDto.Add(expectedSelectedRoomCustomField); var customFieldsCollection = new CustomFieldCollectionDto { expectedIpAddressCustomField, expectedRoomLocationCustomField, expectedMacAddressCustomField }; var rgType = new EquipmentTypeDto { ONTModel = new ONTModelDto { BaseModel = expectedBaseModelValue }, Category = EquipmentCategoryDto.RGDataPort }; var ipVideoType = new EquipmentTypeDto { Model = "ISP7500", Category = EquipmentCategoryDto.DVR, IptvCapable = true }; // main active RG var equipmentDataDto = new EquipmentDto { SerialNumber = expectedSerialNumber + "D01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "ACTIVE" }; var mainRg = new List<EquipmentDto> { equipmentDataDto, new EquipmentDto { SerialNumber = expectedSerialNumber + "P01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "ACTIVE" }, new EquipmentDto { SerialNumber = expectedSerialNumber + "P02", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "ACTIVE" } }; // ip video device var ipVideoDevice = new EquipmentDto { SerialNumber = "STBTEST1234", CustomFields = new List<CustomFieldDto> { expectedRoomLocationCustomField }, UnitAddress = "1234567890", LocationId = expectedLocationId, Type = ipVideoType, Status = "ACTIVE" }; // other RGs on the account var otherRgs = new List<EquipmentDto> { new EquipmentDto { SerialNumber = "RGCREATE1234" + "D01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "IGNORE" }, new EquipmentDto { SerialNumber = "RGCREATE2345" + "D01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "IGNORE" }, new EquipmentDto { SerialNumber = "RGCREATE3456" + "D01", CustomFields = customFieldsDto, UnitAddress = expectedUnitAddress, LocationId = expectedLocationId, Type = rgType, Status = "IGNORE" }, }; // set location ShimCurrentSubscriber.AllInstances.LocationIdGet = o => expectedLocationId; // set WanIpAddress ShimCurrentSubscriber.AllInstances.SubIdGet = o => "1234567"; ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => "12:12:12:12"; ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto(); ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { }; // set activate residential gateway to true ShimRosettianClient.AllInstances.ActivateResidentialGatewayStringStringUserDto = (myTestclient, mylocationId, myDeviceId, userDto) => true; // expected search results after Activate RG var searchEquipmentsResult = new List<EquipmentDto>(); searchEquipmentsResult.AddRange(mainRg); searchEquipmentsResult.AddRange(otherRgs); searchEquipmentsResult.Add(ipVideoDevice); // set search results to expected ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myTestClient, mySearchFields, myUserDto) => searchEquipmentsResult; // expected custom fields equipmentDataDto.CustomFields = customFieldsDto; // set load eqiupment for main RG ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => equipmentDataDto; // set custom fields ShimRosettianClient.AllInstances.GetCustomFieldsUserDto = (myTestClient, myUserDto) => customFieldsCollection; // set ip video device path ShimVirtualPathUtility.ToAbsoluteString = (myTestString) => @"http://testapp/images/DVR.png"; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // call ActivateResidentialGateway of ResidentialGatewayController var result = residentialController.ActivateResidentialGateway(expectedSerialNumber, expectedLocationId) as JsonResult; // validate json result Assert.IsNotNull(result, "Returned Json result is null"); dynamic resultData = result.Data; var status = resultData.status as string; var errorMessage = string.Empty; if (status == "error") { errorMessage = resultData.errorMessage; } Assert.AreEqual("valid", status, "status is not valid - {0}", errorMessage); var renderedPartial = resultData.returnedPartial as string; Assert.IsNotNull(renderedPartial, "Prerendered partial is null."); } }
public void EditResidentialGateway_hasMainRg_hasListOtherRgs_hasIpVideoDevice_ValidateSuccessScenario() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() 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; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = o => session; // current location const string expectedLocationId = "123456789"; // expected all devices on current location var customFieldsDto = RgTestData_CustomFieldsCollection(); var mainRg = RgTestData_MainRg(customFieldsDto, expectedLocationId); var ipVideoDevice = RgTestData_IpVideoDevice(customFieldsDto, expectedLocationId); var otherRgs = RgTestData_OtherRgList(customFieldsDto, expectedLocationId); // rg to be updated var rgTobeUpdated = otherRgs.First(); rgTobeUpdated.UnitAddress = "12345678"; // set location and sub ShimCurrentSubscriber.AllInstances.LocationIdGet = o => expectedLocationId; ShimCurrentSubscriber.AllInstances.SubIdGet = o => "1234567"; ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => "10.10.10.10"; // set eidt residential gateway to true ShimRosettianClient.AllInstances.UpdateONTPortsEquipmentCriteriaCollectionDtoUserDto = (myTestclient, myEquipmentCriteriaDto, userDto) => true; // expected search results after Update RG var searchEquipmentsResult = new List<EquipmentDto>(); searchEquipmentsResult.AddRange(mainRg); searchEquipmentsResult.AddRange(otherRgs); searchEquipmentsResult.Add(ipVideoDevice); // set search results to expected ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myTestClient, mySearchFields, myUserDto) => searchEquipmentsResult; // expected custom fields var equipmentDataDto = mainRg.First(x => x.SerialNumber.EndsWith("D01")); equipmentDataDto.CustomFields = customFieldsDto.ToList(); // set load eqiupment for main RG ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => equipmentDataDto; // set custom fields ShimRosettianClient.AllInstances.GetCustomFieldsUserDto = (myTestClient, myUserDto) => customFieldsDto; // set ip video device path ShimVirtualPathUtility.ToAbsoluteString = (myTestString) => @"http://testapp/images/DVR.png"; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // RG to be updated var model4Update = new ResidentialGatewayModel { ID = rgTobeUpdated.SerialNumber, UnitAddress = rgTobeUpdated.UnitAddress }; // call EditResidentialGateway of ResidentialGatewayController var result = residentialController.EditResidentialGateway(model4Update) as JsonResult; // validate json result Assert.IsNotNull(result, "Returned Json result is null"); dynamic resultData = result.Data; var status = resultData.status as string; var errorMessage = string.Empty; if (status == "error") { errorMessage = resultData.errorMessage; } Assert.AreEqual("valid", status, "status is not valid - {0}", errorMessage); var renderedPartial = resultData.returnedPartial as string; Assert.IsNotNull(renderedPartial, "Prerendered partial is null."); } }
public void AddVideoDevice_ValidateSuccessScenario() { using (ShimsContext.Create()) { // arrange var myContext = new SIMPLTestContext(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; ShimHttpContext.AllInstances.SessionGet = o => session; // current subscriber const string currentSubscriberId = "CURRENTSUBSCRIBER"; // current location const string currentLocationId = "CURRENTLOCATION"; // new IP video device to be added var customFieldsDto = RgTestData_CustomFieldsCollection(); var ipVideoDevice = RgTestData_IpVideoDevice(customFieldsDto, "ADIFFERENTLOCATION"); // set location Id ShimCurrentSubscriber.AllInstances.LocationIdGet = o => currentLocationId; // set subscriber id ShimCurrentSubscriber.AllInstances.SubIdGet = o => currentSubscriberId; // set Rosettian LoadEquipment with ipVideoDevice ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => ipVideoDevice; // set Rosettian UpdateEquipment to success ShimRosettianClient.AllInstances.UpdateEquipmentEquipmentDtoUserDto = (myTestClient, myEquipmentDto, myUserDto) => true; // set Rosettian SearchEquipment to return ipVideoDevice ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myTestClient, myEquipmentDto, myUserDto) => new List<EquipmentDto> { ipVideoDevice }; //Get Custom Fields ShimRosettianClient.AllInstances.GetCustomFieldsUserDto = delegate { return new CustomFieldCollectionDto(); } ; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // call AddVideoDevice action method var result = residentialController.AddVideoDevice(ipVideoDevice.SerialNumber) as JsonResult; // validate returned results Assert.IsNotNull(result, "ActionResult is null"); Assert.IsNotNull(result.Data, "Data is null"); dynamic actualResult = result.Data; Assert.AreEqual("200", actualResult.code); Assert.AreEqual("valid", actualResult.status); } }
public void AddVideoDevice_DeviceIdDoesNotExist_ValidateFailedScenario() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; ShimHttpContext.AllInstances.SessionGet = o => session; // current subscriber const string currentSubscriberId = "SUBIDWITHANYVALUE"; // current location const string currentLocationId = "LOCIDWITHANYVALUE"; // deviceId to be added const string deviceId = "DEVICEIDDOESNOTEXIST"; // set location Id ShimCurrentSubscriber.AllInstances.LocationIdGet = o => currentLocationId; // set subscriber id ShimCurrentSubscriber.AllInstances.SubIdGet = o => currentSubscriberId; // set LoadEquipment for the IP device to be empty since it does not exist ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => new EquipmentDto(); // expected AddVideoDevice Json result var expectedResult = new { status = "error", errorMessage = string.Format("Error adding device [{0}]: Activation is not allowed, device [{0}] does not exist", deviceId) }; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // call AddVideoDevice action method var actualResult = residentialController.AddVideoDevice(deviceId) as JsonResult; // validate result Assert.IsNotNull(actualResult, "AddVideoDevice Json result is null"); Assert.IsTrue(actualResult != null && actualResult.Data != null); Assert.AreEqual(expectedResult.ToJSON(), actualResult.Data.ToJSON()); } }
public void UpdateVideoDevices_ValidateSuccessScenario() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() 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; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = (o) => session; ShimBusinessFacade.AllInstances.LoadVideoDevicesSearchFieldsDtoUserDto = (facade, dto, arg3) => new List<EquipmentDto>(); ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (client, s, arg3, arg4) => new EquipmentDto { CustomFields = new List<CustomFieldDto> { new CustomFieldDto { Label = "ROOM_LOCATION" } } }; ShimRosettianClient.AllInstances.UpdateEquipmentEquipmentDtoUserDto = (client, dto, arg3) => true; ShimErrorLoggingService.AllInstances.LogErrorException = (myClient, myException) => { }; ShimCurrentSubscriber.AllInstances.LocationIdGet = (mySubscriber) => "0089451"; var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); var result = residentialController.UpdateVideoDevices("[{\"ID\":\"M77441GA1002\",\"Status\":\"DISABLED\",\"SelectedRoom\":\"GARAGE\",\"GuidInfo\":{\"Guid\":\"454f676e...\",\"Tooltip\":\"454f676e-a1af-474a-a508-8044d505790f\"},\"Model\":{\"ImagePath\":\"/Images/CiscoDVR.png\",\"ModelName\":\"ISB7500\"},\"Type\":\"DVR\"}]"); Assert.IsNotNull(result, "Partial view result returned is null."); Assert.IsTrue(result is JsonResult, "result is not JsonResult"); var resultJsonResult = result as JsonResult; Assert.IsNotNull(resultJsonResult, "Partial view result returned is null."); dynamic dynResult = resultJsonResult.Data; Assert.AreEqual("valid", dynResult.status, "Status doesn't match expected"); } }
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 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"); } }
public void Index_hasIpVideoDevices_IpVideoDeviceHasBadUnitAddress() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); //Build FakeDto var fakeUserDto = myContext.GetFakeUserDtoObject(); //Fake call to CurrentUser.AsUserDto() 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; } }; // When the Fake HttpContext is called, provide the fake session state ShimHttpContext.AllInstances.SessionGet = o => session; ShimCurrentSubscriber.AllInstances.HasTivoServiceOnlyGet = delegate { return false; }; // current location const string expectedLocationId = "123456789"; // expected all devices on current location var customFieldsDto = RgTestData_CustomFieldsCollection(); var mainRg = RgTestData_MainRg(customFieldsDto, expectedLocationId); var otherRgs = RgTestData_OtherRgList(customFieldsDto, expectedLocationId); var ipVideoDevices = new List<EquipmentDto> { RgTestData_IpVideoDevice(customFieldsDto, expectedLocationId), RgTestData_IpVideoDevice2(customFieldsDto, expectedLocationId) }; Assert.IsTrue(ipVideoDevices.Any(x => string.IsNullOrWhiteSpace(x.UnitAddress)), "1 of IP video devices should have null or empty unit address"); // expected search results var searchEquipmentsResult = new List<EquipmentDto>(); searchEquipmentsResult.AddRange(mainRg); searchEquipmentsResult.AddRange(otherRgs); searchEquipmentsResult.AddRange(ipVideoDevices); // set search results to expected search results ShimRosettianClient.AllInstances.SearchEquipmentSearchFieldsDtoUserDto = (myTestClient, mySearchFields, myUserDto) => searchEquipmentsResult; // set load phones shim var loadSubscriberPhonesResult = new List<PhoneDto>(); ShimCurrentSubscriber.AllInstances.ProvisionedPhonesListGet = o => loadSubscriberPhonesResult; // expected custom fields var equipmentDataDto = mainRg.First(x => x.SerialNumber.EndsWith("D01")); equipmentDataDto.CustomFields = customFieldsDto.ToList(); // epected RG details var expectedIpAddressValue = equipmentDataDto.CustomFields.First(x => x.Label == "WAN_IP_ADDR").Value; var expectedBaseModelValue = equipmentDataDto.Type.ONTModel.BaseModel; var expectedSerialNumber = equipmentDataDto.SerialNumber.Substring(0, equipmentDataDto.SerialNumber.Length - 3); var expectedUnitAddress = equipmentDataDto.UnitAddress; var expectedMacAddressValue = equipmentDataDto.CustomFields.First(x => x.Label == "ENET_MAC_ADDR").Value; // set WanIpAddress ShimCurrentSubscriber.AllInstances.SubIdGet = o => "1234567"; ShimCurrentSubscriber.AllInstances.WanIpAddressGet = o => expectedIpAddressValue; ShimRosettianClient.AllInstances.LoadSubscriberStringUserDto = (client, subId, userDto) => new SubscriberDto(); ShimCurrentSubscriber.UpdateWanIpAddressString = (myWanIpAddress) => { }; // set load equipment for main RG ShimRosettianClient.AllInstances.LoadEquipmentStringBooleanUserDto = (myTestClient, myEquipmentId, returnExtraData, myUserDto) => equipmentDataDto; ShimRosettianClient.AllInstances.GetCustomFieldsUserDto = (myTestClient, myUserDto) => customFieldsDto; ShimVirtualPathUtility.ToAbsoluteString = (myTestString) => @"http://testapp/images/DVR.png"; ShimDBCache.LocationsGet = delegate { return new List<Location>(); }; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // call Index of ResidentialGatewayController var result = residentialController.Index("12345", expectedLocationId, null) as PartialViewResult ?? new PartialViewResult(); // validate partial view and model is not null Assert.IsNotNull(result, "Partial view result returned is null."); Assert.IsTrue(result.ViewName.Equals("Index"), "View names do not match."); var residentialGatewayModel = (ResidentialGatewayModel)(result.Model); Assert.IsNotNull(residentialGatewayModel); // validate the ErrorInfo is null Assert.IsNull(residentialGatewayModel.ErrorInfo); // validate main RG details Assert.AreEqual(expectedIpAddressValue, residentialGatewayModel.IPAddress, "IP does not match."); Assert.AreEqual(expectedUnitAddress, residentialGatewayModel.UnitAddress, "UnitAddress does not match."); Assert.AreEqual(expectedMacAddressValue, residentialGatewayModel.MacAddress, "MacAddress does not match."); Assert.AreEqual(expectedBaseModelValue, residentialGatewayModel.Model, "Model number does not match."); Assert.AreEqual(expectedSerialNumber, residentialGatewayModel.ID, "Serial number does not match."); // validate other RGs list Assert.IsTrue(residentialGatewayModel.OtherRGList.Any(), "No other RGs found."); Assert.AreEqual(otherRgs.Count, residentialGatewayModel.OtherRGList.Count, "Other RGs count does not match."); otherRgs = otherRgs.OrderBy(x => x.SerialNumber).ToList(); residentialGatewayModel.OtherRGList = residentialGatewayModel.OtherRGList.OrderBy(x => x.ID).ToList(); for (int i = 0; i < otherRgs.Count; i++) { var expected = otherRgs[i]; var actual = residentialGatewayModel.OtherRGList[i]; Assert.AreEqual(expected.SerialNumber.Substring(0, expected.SerialNumber.Length - 3), actual.ID, "Other RG serial number does not match."); Assert.AreEqual(expected.LocationId, actual.LocationID, "Other RG location id does not match."); Assert.AreEqual(expected.Status, actual.Status, "Other RG status does not match."); Assert.AreEqual(expected.UnitAddress, actual.UnitAddress, "Other RG UnitAddress does not match."); Assert.AreEqual(expected.Type.ONTModel.BaseModel, actual.Model, "Other RG UnitAddress does not match."); } // validate ip video device Assert.IsTrue(residentialGatewayModel.VideoDevices.Any(), "No video devices found."); Assert.AreEqual(ipVideoDevices.Count, residentialGatewayModel.VideoDevices.Count, "IP Video devices count does not match."); ipVideoDevices = ipVideoDevices.OrderBy(x => x.SerialNumber).ToList(); residentialGatewayModel.VideoDevices = residentialGatewayModel.VideoDevices.OrderBy(x => x.ID).ToList(); Assert.IsTrue(ipVideoDevices.Any(x => string.IsNullOrWhiteSpace(x.UnitAddress)), "1 of expected IP video devices should have null or empty unit address"); for (var i = 0; i < ipVideoDevices.Count; i++) { var expected = ipVideoDevices[i]; var actual = residentialGatewayModel.VideoDevices[i]; Assert.AreEqual(expected.Type.Category.ToString(), actual.Type, "IP Video device type mismatch."); Assert.AreEqual(expected.Type.Model, actual.Model.ModelName, "IP Video device model mismatch."); Assert.AreEqual(expected.SerialNumber, actual.ID, "IP Video device serial number does not match."); Assert.AreEqual(expected.Status, actual.Status, "IP Video device does not match."); Assert.AreEqual(expected.UnitAddress, actual.GuidInfo.Tooltip, "IP Video device UnitAddress does not match."); if (string.IsNullOrWhiteSpace(expected.UnitAddress)) { Assert.IsTrue(string.IsNullOrWhiteSpace(actual.GuidInfo.Tooltip), "Actual unit address should be null for {0}", actual.ID); Assert.AreEqual("No Data", actual.GuidInfo.Guid, "GUID should be displayed as No Data if unit address is null or empty"); } } } }
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 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 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 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 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 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 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 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 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 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 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 SwapResidentialGateway_NewRGDoesNotExist_ValidateFailedScenario() { using (ShimsContext.Create()) { //Arrange var myContext = new SIMPLTestContext(); var fakeUserDto = myContext.GetFakeUserDtoObject(); ShimCurrentUser.AsUserDto = () => fakeUserDto; var context = new ShimHttpContext(); ShimHttpContext.CurrentGet = () => context; var session = new ShimHttpSessionState { ItemGetString = s => { if (s == "") return null; return null; } }; ShimHttpContext.AllInstances.SessionGet = o => session; // current location const string currentLocationId = "123456789"; // Set location Id ShimCurrentSubscriber.AllInstances.LocationIdGet = o => currentLocationId; // expected all devices on current location var customFieldsDto = RgTestData_CustomFieldsCollection(); var mainRg = RgTestData_MainRg(customFieldsDto, currentLocationId); // old RG serial number var oldRgSerialNumber = mainRg[0].SerialNumber; // new RG serial number const string newRgSerialNumber = "NONEXISTRGSERIALNUMBER"; // expected ROZ error message var expectedRozErrorMessage = string.Format("Swap is not allowed: New residential gateway [NONEXISTRGSERIALNUMBER] does not exist"); // set ROZ SwapResidentialGateway exception ShimRosettianClient.AllInstances.SwapResidentialGatewayStringStringStringUserDto = (myTestClient, myLocationId, myOldRgSerialNumber, myNewRgSerialNumber, myUserDto) => { throw new Exception(expectedRozErrorMessage); }; // expected SwapResidentialGateway Json result var expectedResult = new { status = "error", errorMessage = string.Format ( "Error swapping old Residential Gateway {0} with new Residential Gateway {1}: {2}", oldRgSerialNumber, newRgSerialNumber, expectedRozErrorMessage ) }; // get service for ResidentialGatewayController var residentialController = DependencyResolver.Current.GetService<ResidentialGatewayController>(); // call SwapResidentialGateway action method var actualResult = residentialController.SwapResidentialGateway(currentLocationId, oldRgSerialNumber, newRgSerialNumber) as JsonResult; // validate result Assert.IsNotNull(actualResult, "SwapResidentialGateway Json result is null"); Assert.IsTrue(actualResult != null && actualResult.Data != null); Assert.AreEqual(expectedResult.ToJSON(), actualResult.Data.ToJSON()); } }