private async Task RegisterUser(string role, string email, string id = null, ResultType expectedResult = ResultType.Success, bool useDefaultRole = false) { var userManager = CreateMockUserManager(); var roleManager = CreateMockRoleManager(); var configuration = new Mock <HttpConfiguration>(); var logService = CreateMockLogService(); var controller = new UserController(userManager.Object, roleManager.Object, logService.Object) { Configuration = configuration.Object }; var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; var request = new HttpRequest("", "http://localhost", ""); var context = new HttpContext(request, new HttpResponse(new StringWriter())); HttpContext.Current = context; var parameters = new ODataActionParameters { { "role", role }, { "email", email } }; var res = await controller.Register(parameters); var expectedRole = role; if (useDefaultRole) { expectedRole = DefaultRole; } switch (expectedResult) { case ResultType.Success: userManager.Verify(u => u.CreateAsync(It.Is <ApplicationUser>(a => a.Email == email && a.UserName == email && a.MustResetPassword), It.IsNotNull <string>())); userManager.Verify(u => u.AddToRoleAsync(id, expectedRole)); userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsNotNull <UrlHelper>(), id, It.IsNotNull <string>())); logService.Verify(l => l.LogUserCreated(TestUsername, email)); Assert.IsType <OkResult>(res); break; case ResultType.ModelError: userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsAny <UrlHelper>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); logService.Verify(l => l.LogUserCreated(It.IsAny <string>(), It.IsAny <string>()), Times.Never); Assert.IsType <InvalidModelStateResult>(res); break; } }
private async Task PutIMEIToCallsign(int id, string callsign, string imei, VehicleType?type, ResultType expectedResult = ResultType.Success) { var logService = CreateMockLogService(); var service = CreateMockIMEIService(); var controller = new IMEIController(service.Object, logService.Object); var config = new Mock <HttpConfiguration>(); var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; controller.Configuration = config.Object; var delta = new Delta <IMEIToCallsign>(); if (!string.IsNullOrEmpty(imei)) { delta.TrySetPropertyValue("IMEI", imei); } if (!string.IsNullOrEmpty(callsign)) { delta.TrySetPropertyValue("CallSign", callsign); } if (type != null) { delta.TrySetPropertyValue("Type", type); } var res = await controller.Put(id, delta); switch (expectedResult) { case ResultType.ModelError: Assert.IsType <InvalidModelStateResult>(res); logService.Verify(l => l.LogIMEIRegistered(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <VehicleType>()), Times.Never); break; case ResultType.NotFoundError: Assert.IsType <NotFoundResult>(res); logService.Verify(l => l.LogIMEIRegistered(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <VehicleType>()), Times.Never); break; case ResultType.Success: Assert.IsType <UpdatedODataResult <IMEIToCallsign> >(res); service.Verify(i => i.RegisterCallsign(imei, callsign, type)); logService.Verify(l => l.LogIMEIRegistered(TestUsername, imei, callsign, type ?? VehicleType.Unknown)); break; } }
private async Task DeleteUser(string id, bool expectSuccess = true, ApplicationUser testUser = null) { var userManager = CreateMockUserManager(); var roleManager = CreateMockRoleManager(); var logService = CreateMockLogService(); var controller = new UserController(userManager.Object, roleManager.Object, logService.Object); var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; var res = await controller.Delete(id); if (expectSuccess) { userManager.Verify(u => u.DeleteAsync(testUser)); logService.Verify(l => l.LogUserDeleted(TestUsername, testUser.UserName)); } Assert.IsType <StatusCodeResult>(res); }
private async Task PostIMEIToCallsign(string callsign, string imei, VehicleType type, ResultType expectedResult = ResultType.Success) { var service = CreateMockIMEIService(); var logService = CreateMockLogService(); var controller = new IMEIController(service.Object, logService.Object); var config = new Mock <HttpConfiguration>(); var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; controller.Configuration = config.Object; var imeiToCallsign = new IMEIToCallsign { CallSign = callsign, IMEI = imei, Type = type }; MockHelpers.Validate(imeiToCallsign, controller); var res = await controller.Post(imeiToCallsign); switch (expectedResult) { case ResultType.ModelError: Assert.IsType <InvalidModelStateResult>(res); logService.Verify(l => l.LogIMEIRegistered(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <VehicleType>()), Times.Never); break; case ResultType.Success: Assert.IsType <CreatedODataResult <IMEIToCallsign> >(res); service.Verify(i => i.RegisterCallsign(imei, callsign, type)); logService.Verify(l => l.LogIMEIRegistered(TestUsername, imei, callsign, type)); break; } }
private async Task DeleteCallsign(int id, string imei, bool shouldLog) { var service = CreateMockIMEIService(); var logService = CreateMockLogService(); var controller = new IMEIController(service.Object, logService.Object); var config = new Mock <HttpConfiguration>(); var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; controller.Configuration = config.Object; var res = await controller.Delete(id); var result = res as StatusCodeResult; Assert.NotNull(result); Assert.Equal(HttpStatusCode.NoContent, result.StatusCode); if (shouldLog) { logService.Verify(l => l.LogIMEIDeleted(TestUsername, imei)); } }
private async Task PutUser(string id, string email, ApplicationRole role, IEnumerable <string> oldRoles = null, bool changeRole = true, bool changeEmail = true, string username = null, ResultType expectedResult = ResultType.Success) { var userManager = CreateMockUserManager(); var roleManager = CreateMockRoleManager(); var configuration = new Mock <HttpConfiguration>(); var logService = CreateMockLogService(); var controller = new UserController(userManager.Object, roleManager.Object, logService.Object) { Configuration = configuration.Object }; var principal = MockHelpers.CreateMockPrincipal(TestUsername); controller.User = principal.Object; var request = new HttpRequest("", "http://localhost", ""); var context = new HttpContext(request, new HttpResponse(new StringWriter())); HttpContext.Current = context; var model = new UserAdminViewModel { Id = id, EmailAddress = email, Role = role.Name, RoleId = role.Id, RoleDisplayName = role.DisplayName, UserName = email }; var res = await controller.Put(id, model); switch (expectedResult) { case ResultType.Success: Assert.IsType <OkResult>(res); if (changeEmail) { userManager.Verify(u => u.SetEmailAsync(id, email)); userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsNotNull <UrlHelper>(), id)); } else { userManager.Verify(u => u.SetEmailAsync(id, email), Times.Never); userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsNotNull <UrlHelper>(), id), Times.Never); } if (changeRole) { userManager.Verify(u => u.RemoveFromRolesAsync(id, It.Is <string[]>(s => s.SequenceEqual(oldRoles)))); userManager.Verify(u => u.AddToRoleAsync(id, role.Name)); } else { userManager.Verify(u => u.RemoveFromRolesAsync(id, It.Is <string[]>(s => s.SequenceEqual(oldRoles))), Times.Never); userManager.Verify(u => u.AddToRoleAsync(id, role.Name), Times.Never); } if (changeEmail || changeRole) { logService.Verify(l => l.LogUserUpdated(TestUsername, username, It.Is <IEnumerable <string> >(s => CheckUpdateProperties(s, changeRole, changeEmail)))); } else { logService.Verify(l => l.LogUserUpdated(TestUsername, It.IsAny <string>(), It.IsAny <IEnumerable <string> >()), Times.Never); } break; case ResultType.ModelError: Assert.IsType <InvalidModelStateResult>(res); userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsNotNull <UrlHelper>(), id), Times.Never); break; case ResultType.NotFoundError: Assert.IsType <NotFoundResult>(res); userManager.Verify(u => u.GenerateEmailConfirmationEmailAsync(It.IsNotNull <UrlHelper>(), id), Times.Never); break; } }