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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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;
            }
        }