예제 #1
0
        public async Task Should_Return_Forbidden_Status_Code_When_Requesting_By_User_Client()
        {
            var factory = new UserWebApplicationFactory("UserShouldNotUpdateAccountRolesIntegrationTest");
            var client  = factory.WithWebHostBuilder(builder => builder.ConfigureWebHostBuilderForIntegrationTest())
                          .CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });
            var accountRoleEntity = await InsertUserRoleEntityIfNotExistsAsync(factory.DbContext);

            var accountEntity = await InsertAccountEntityAsync(factory.DbContext, accountRoleEntity.Id);

            var updateAccountRolesRequest = new UpdateAccountRolesRequest
            {
                Roles = new List <Guid> {
                    accountRoleEntity.Id
                }
            };
            var updateAccountRolesRequestString = JsonConvert.SerializeObject(updateAccountRolesRequest);
            var requestContent = new StringContent(updateAccountRolesRequestString, Encoding.UTF8, "application/json");

            client.DefaultRequestHeaders.Add("api-version", "1");

            var response = await client.PutAsync($"api/accounts/{accountEntity.Id}/roles", requestContent);

            response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Forbidden);
        }
예제 #2
0
        public async Task Should_Update_Account_Roles_When_Requesting_By_Administrator_Client()
        {
            var factory = new AdministratorWebApplicationFactory("AdministratorShouldUpdateAccountRolesIntegrationTest");
            var client  = factory.WithWebHostBuilder(builder => builder.ConfigureWebHostBuilderForIntegrationTest())
                          .CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });
            var accountRoleEntity = await InsertUserRoleEntityIfNotExistsAsync(factory.DbContext);

            var accountEntity = await InsertAccountEntityAsync(factory.DbContext, accountRoleEntity.Id);

            var roleToUpdate = await InsertRoleEntityToUpdateAsync(factory.DbContext);

            var updateAccountRolesRequest = new UpdateAccountRolesRequest
            {
                Roles = new List <Guid> {
                    accountRoleEntity.Id, roleToUpdate.Id
                }
            };
            var updateAccountRolesRequestString = JsonConvert.SerializeObject(updateAccountRolesRequest);
            var requestContent = new StringContent(updateAccountRolesRequestString, Encoding.UTF8, "application/json");

            client.DefaultRequestHeaders.Add("api-version", "1");

            var response = await client.PutAsync($"api/accounts/{accountEntity.Id}/roles", requestContent);

            response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.NoContent);
            var updatedAccountRoleEntities = await factory.DbContext.AccountRoles.Where(x => x.AccountId == accountEntity.Id)
                                             .ToListAsync();

            var updatedAccountRoleIds = updatedAccountRoleEntities.Select(x => x.RoleId);

            updatedAccountRoleIds.Should().Contain(roleToUpdate.Id);
        }
예제 #3
0
        public async Task Should_Return_Unauthorized_Status_Code_When_Requesting_By_Anonymous_Client()
        {
            var updateAccountRolesRequest = new UpdateAccountRolesRequest
            {
                Roles = new List <Guid> {
                    Guid.NewGuid()
                }
            };
            var updateAccountRequestString = JsonConvert.SerializeObject(updateAccountRolesRequest);
            var requestContent             = new StringContent(updateAccountRequestString, Encoding.UTF8, "application/json");

            _fixture.AnonymousHttpClient.DefaultRequestHeaders.Add("api-version", "1");

            var response = await _fixture.AnonymousHttpClient.PutAsync($"api/accounts/{Guid.NewGuid()}/roles", requestContent);

            response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.Unauthorized);
        }
예제 #4
0
        public async Task UpdateAccountRolesAsync_Should_Return_NoContentResult()
        {
            var accountId = Guid.NewGuid();
            var updateAccountRolesRequest = new UpdateAccountRolesRequest
            {
                Roles = new List <Guid> {
                    Guid.NewGuid()
                }
            };

            _communicationBusMock.Setup(x => x.SendCommandAsync(It.IsAny <UpdateAccountRolesCommand>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            var result = await _controller.UpdateAccountRolesAsync(accountId, updateAccountRolesRequest);

            var noContentResult = result.As <NoContentResult>();

            noContentResult.Should().NotBeNull();
        }
예제 #5
0
        public async Task <IActionResult> UpdateAccountRolesAsync([FromRoute] Guid id, [FromBody] UpdateAccountRolesRequest request)
        {
            var updateAccountRolesCommand = new UpdateAccountRolesCommand(id, request.Roles);
            await _communicationBus.SendCommandAsync(updateAccountRolesCommand);

            return(NoContent());
        }