Esempio n. 1
0
        public void GetAccessRequest_Success()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <AccessRequestController>(user);

            var service = helper.GetService <Mock <IPimsRepository> >();
            var mapper  = helper.GetService <IMapper>();

            var accessRequest = EntityHelper.CreateAccessRequest(1);

            service.Setup(m => m.AccessRequest.Get(It.IsAny <long>())).Returns(accessRequest);
            var model = mapper.Map <Model.AccessRequestModel>(accessRequest);

            // Act
            var result = controller.GetAccessRequest(1);

            // Assert
            var actionResult = Assert.IsType <JsonResult>(result);
            var actualResult = Assert.IsType <Model.AccessRequestModel>(actionResult.Value);

            Assert.Equal(model, actualResult, new ShallowPropertyCompare());
            Assert.Equal(model.RoleId, actualResult.RoleId, new DeepPropertyCompare());
            Assert.Equal(model.User.Id, actualResult.User.Id);
            service.Verify(m => m.AccessRequest.Get(1), Times.Once());
        }
Esempio n. 2
0
        public async void UpdateRoleAsync_Success()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole("admin-users");
            var helper     = new TestHelper();
            var controller = helper.CreateController <RoleController>(user);

            var mapper  = helper.GetService <IMapper>();
            var service = helper.GetService <Mock <IPimsKeycloakService> >();
            var erole   = new Entity.PimsRole(Guid.NewGuid(), "test")
            {
                Description = "description"
            };

            service.Setup(m => m.UpdateRoleAsync(It.IsAny <Entity.PimsRole>())).Returns(Task.FromResult(erole));
            var model = mapper.Map <Model.Update.RoleModel>(erole);

            // Act
            var result = await controller.UpdateRoleAsync(erole.RoleUid, model);

            // Assert
            var actionResult   = Assert.IsType <JsonResult>(result);
            var actualResult   = Assert.IsType <Model.RoleModel>(actionResult.Value);
            var expectedResult = mapper.Map <Model.RoleModel>(erole);

            Assert.Equal(expectedResult.Id, actualResult.Id);
            Assert.Equal(expectedResult.Name, actualResult.Name);
            Assert.Equal(expectedResult.Description, actualResult.Description);
            service.Verify(m => m.UpdateRoleAsync(It.IsAny <Entity.PimsRole>()), Times.Once());
        }
Esempio n. 3
0
        public async void AddAccessRequestAsync_InvalidAgencies_BadRequest()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <UserController>(user);

            var service = helper.GetService <Mock <IPimsService> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()));

            var accessRequest = new Model.AccessRequestModel()
            {
                Agencies = new List <Model.AccessRequestAgencyModel>(),
                Roles    = new List <Model.AccessRequestRoleModel>(new[] { new Model.AccessRequestRoleModel() })
            };
            var model = mapper.Map <Model.AccessRequestModel>(accessRequest);

            // Act
            // Assert
            await Assert.ThrowsAsync <BadRequestException>(async() => await controller.AddAccessRequestAsync(model));

            service.Verify(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()), Times.Never());
        }
Esempio n. 4
0
        public async void AddAccessRequest_Success()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <UserController>(user);

            var service = helper.GetService <Mock <IPimsService> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()));

            var accessRequest = EntityHelper.CreateAccessRequest();
            var model         = mapper.Map <Model.AccessRequestModel>(accessRequest);

            // Act
            var result = await controller.AddAccessRequestAsync(model);

            // Assert
            var actionResult = Assert.IsType <CreatedAtActionResult>(result);
            var actualResult = Assert.IsType <Model.AccessRequestModel>(actionResult.Value);

            Assert.Equal(model, actualResult, new ShallowPropertyCompare());
            Assert.Equal(model.Agencies, actualResult.Agencies, new DeepPropertyCompare());
            Assert.Equal(model.Roles, actualResult.Roles, new DeepPropertyCompare());
            Assert.Equal(model.User.Id, actualResult.User.Id);
            service.Verify(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()), Times.Once());
        }
Esempio n. 5
0
        public void UpdateAccessRequest_Null_BadRequest()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <AccessRequestController>(user);

            var service = helper.GetService <Mock <IPimsRepository> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.AccessRequest.Update(It.IsAny <Entity.PimsAccessRequest>()));

            // Act
            // Assert
            Assert.Throws <BadRequestException>(() => controller.UpdateAccessRequest(1, null));
            service.Verify(m => m.AccessRequest.Update(It.IsAny <Entity.PimsAccessRequest>()), Times.Never());
        }
Esempio n. 6
0
        public async void AddAccessRequestAsync_Null_BadRequest()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <UserController>(user);

            var service = helper.GetService <Mock <IPimsService> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()));

            // Act
            // Assert
            await Assert.ThrowsAsync <BadRequestException>(async() => await controller.AddAccessRequestAsync(null));

            service.Verify(m => m.User.AddAccessRequest(It.IsAny <Entity.AccessRequest>()), Times.Never());
        }
Esempio n. 7
0
        public async Task UserInfo_Success()
        {
            // Arrange
            var user    = PrincipalHelper.CreateForRole();
            var helper  = new TestHelper();
            var options = new Pims.Keycloak.Configuration.KeycloakOptions()
            {
                Authority     = "test",
                Audience      = "test",
                Client        = "test",
                OpenIdConnect = new OpenIdConnectOptions()
                {
                    Token    = "test",
                    UserInfo = "test"
                }
            };
            var optionsMonitor = new Mock <IOptionsMonitor <Pims.Keycloak.Configuration.KeycloakOptions> >();

            optionsMonitor.Setup(m => m.CurrentValue).Returns(options);
            var controller = helper.CreateController <UserController>(user, optionsMonitor.Object);

            var service = helper.GetService <Mock <IProxyRequestClient> >();
            var model   = new KModel.UserInfoModel()
            {
                Id = Guid.NewGuid()
            };
            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(System.Text.Json.JsonSerializer.Serialize(model))
            };

            service.Setup(m => m.ProxyGetAsync(It.IsAny <HttpRequest>(), It.IsAny <string>())).Returns(Task.FromResult(response));

            // Act
            var result = await controller.UserInfoAsync();

            // Assert
            var actionResult = Assert.IsType <JsonResult>(result);
            var actualResult = Assert.IsType <KModel.UserInfoModel>(actionResult.Value);

            Assert.Equal(model, actualResult, new ShallowPropertyCompare());
            service.Verify(m => m.ProxyGetAsync(It.IsAny <HttpRequest>(), It.IsAny <string>()), Times.Once());
        }
Esempio n. 8
0
        public void GetAccessRequest_Current_NoContent()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <AccessRequestController>(user);

            var service = helper.GetService <Mock <IPimsRepository> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.AccessRequest.Get());

            // Act
            var result = controller.GetAccessRequest();

            // Assert
            var actionResult = Assert.IsType <NoContentResult>(result);

            service.Verify(m => m.AccessRequest.Get(), Times.Once());
        }
Esempio n. 9
0
        public async void GetRoleAsync_Success()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole("admin-users");
            var helper     = new TestHelper();
            var controller = helper.CreateController <RoleController>(user);

            var mapper  = helper.GetService <IMapper>();
            var service = helper.GetService <Mock <IPimsKeycloakService> >();
            var erole   = new Entity.PimsRole(Guid.NewGuid(), "test");

            service.Setup(m => m.GetRoleAsync(It.IsAny <Guid>())).Returns(Task.FromResult(erole));

            // Act
            var result = await controller.GetRoleAsync(erole.RoleUid);

            // Assert
            var actionResult = Assert.IsType <JsonResult>(result);
            var actualResult = Assert.IsType <Model.RoleModel>(actionResult.Value);

            Assert.Equal(mapper.Map <Model.RoleModel>(erole), actualResult, new DeepPropertyCompare());
            service.Verify(m => m.GetRoleAsync(It.IsAny <Guid>()), Times.Once());
        }
Esempio n. 10
0
        public void UpdateAccessRequest_InvalidOrganizations_BadRequest()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <AccessRequestController>(user);

            var service = helper.GetService <Mock <IPimsRepository> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.AccessRequest.Update(It.IsAny <Entity.PimsAccessRequest>()));

            var accessRequest = new Model.AccessRequestModel()
            {
                OrganizationId = new Model.AccessRequestOrganizationModel().Id,
                RoleId         = new Model.RoleModel().Id
            };
            var model = mapper.Map <Model.AccessRequestModel>(accessRequest);

            // Act
            // Assert
            Assert.Throws <BadRequestException>(() => controller.UpdateAccessRequest(model.Id, model));
            service.Verify(m => m.AccessRequest.Update(It.IsAny <Entity.PimsAccessRequest>()), Times.Never());
        }
Esempio n. 11
0
        public async void GetRolesAsync_Success()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole("admin-users");
            var helper     = new TestHelper();
            var controller = helper.CreateController <RoleController>(user);

            var mapper  = helper.GetService <IMapper>();
            var service = helper.GetService <Mock <IPimsKeycloakService> >();
            var erole   = new Entity.PimsRole(Guid.NewGuid(), "test");
            var eroles  = new[] { erole };

            service.Setup(m => m.GetRolesAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>())).Returns(Task.FromResult((IEnumerable <Entity.PimsRole>)eroles));

            // Act
            var result = await controller.GetRolesAsync(1, 10);

            // Assert
            var actionResult = Assert.IsType <JsonResult>(result);
            var data         = Assert.IsType <Model.RoleModel[]>(actionResult.Value);

            Assert.Equal(mapper.Map <Model.RoleModel[]>(eroles), data, new DeepPropertyCompare());
            service.Verify(m => m.GetRolesAsync(1, 10, It.IsAny <string>()), Times.Once());
        }
Esempio n. 12
0
        public void UpdateAccessRequest_NullRoles_BadRequest()
        {
            // Arrange
            var user       = PrincipalHelper.CreateForRole();
            var helper     = new TestHelper();
            var controller = helper.CreateController <UserController>(user);

            var service = helper.GetService <Mock <IPimsService> >();
            var mapper  = helper.GetService <IMapper>();

            service.Setup(m => m.User.UpdateAccessRequest(It.IsAny <Entity.AccessRequest>()));

            var accessRequest = new Model.AccessRequestModel()
            {
                Agencies = new List <Model.AccessRequestAgencyModel>(),
                Roles    = null
            };
            var model = mapper.Map <Model.AccessRequestModel>(accessRequest);

            // Act
            // Assert
            Assert.Throws <BadRequestException>(() => controller.UpdateAccessRequest(model.Id, model));
            service.Verify(m => m.User.UpdateAccessRequest(It.IsAny <Entity.AccessRequest>()), Times.Never());
        }