예제 #1
0
        public async void ShouldUpdateCorrect()
        {
            var updatedClient = new UpdateClientCommand {
                Id = clientId, CompanyName = GConst.ValidName
            };

            var status = Task.FromResult(await sut.Handle(updatedClient, CancellationToken.None));

            var resultId = context.Clients.SingleOrDefault(x => x.CompanyName == GConst.ValidName).Id;

            Assert.Equal(clientId, resultId);
            Assert.Equal(GConst.SuccessStatus, status.Status.ToString());
            Assert.Equal(GConst.ValidCount, context.Clients.Count());
        }
        public async Task Handle_Success()
        {
            var command   = _fixture.Create <UpdateClientCommand>();
            var clientDTO = _fixture.Create <ClientDTO>();

            _mockClientService.Setup(x => x.UpdateClientAsync(command, CToken)).ReturnsAsync(clientDTO).Verifiable();

            var result = await _updateClientCommandHandler.Handle(command, CToken);

            Assert.AreEqual(clientDTO, result);
            _mockClientService.Verify();
        }
예제 #3
0
        public async Task Handle_ParseUrls()
        {
            Random random         = new Random();
            Guid   clientSystemId = random.NextGuid();

            BeerClient savedClient = GetSaveBeerClient(random, clientSystemId);

            var request = new UpdateClientRequest
            {
                SystemId               = clientSystemId,
                ClientId               = savedClient.ClientId,
                AllowedCorsOrigins     = new[] { "https://myapp.com/" },
                AllowedScopes          = new[] { "test", "testus" },
                DisplayName            = random.GetAlphanumericString(),
                FrontChannelLogoutUri  = "http://mylogout.com/logout/",
                PostLogoutRedirectUris = new[] { "https://myapp2.com/logout-callback/" },
                RedirectUris           = new[] { "https://myapp2.com/login-callback/" },
            };

            var repoMock = new Mock <IClientRepository>(MockBehavior.Strict);

            repoMock.Setup(x => x.CheckIfClientExists(clientSystemId)).ReturnsAsync(true).Verifiable();
            repoMock.Setup(x => x.GetClientById(clientSystemId)).ReturnsAsync(savedClient).Verifiable();

            repoMock.Setup(x => x.UpdateClient(It.Is <BeerClient>(y =>
                                                                  y.DisplayName == request.DisplayName
                                                                  ))).ReturnsAsync(true).Verifiable();

            var handler = new UpdateClientCommandHandler(repoMock.Object,
                                                         Mock.Of <ILogger <UpdateClientCommandHandler> >());

            Boolean result = await handler.Handle(new UpdateClientCommand(request), CancellationToken.None);

            Assert.True(result);

            Assert.Equal(new[] { "https://myapp.com" }, savedClient.AllowedCorsOrigins);
            Assert.Equal(request.AllowedScopes, savedClient.AllowedScopes);
            Assert.Equal(request.DisplayName, savedClient.DisplayName);
            Assert.Equal("http://mylogout.com/logout", savedClient.FrontChannelLogoutUri);
            Assert.Equal(new[] { "https://myapp2.com/login-callback" }, savedClient.RedirectUris);
            Assert.Equal(new[] { "https://myapp2.com/logout-callback" }, savedClient.PostLogoutRedirectUris);

            repoMock.Verify();
        }
        public async Task ShouldUpdate_A_Client()
        {
            var name    = "Vader";
            var request = new UpdateClientCommand {
                Name = name, Id = Guid.NewGuid()
            };

            var mapper         = PetShopMappingConfiguration.GetPetShopMappings();
            var mockRepository = new Mock <IClientRepository>();

            mockRepository.Setup(p => p.Update(It.Is <Client>(c => c.Name == name)));

            var handler = new UpdateClientCommandHandler(mapper, mockRepository.Object);

            var result = await handler.Handle(request, CancellationToken.None);

            result.Message.Should().BeEquivalentTo("Client Updated");
            mockRepository.Verify(m => m.Update(It.IsAny <Client>()), Times.Once());
        }
예제 #5
0
        public async Task Handle_Failed_ClientIdNotFound()
        {
            Random random         = new Random();
            Guid   clientSystemId = random.NextGuid();

            var request = new UpdateClientRequest
            {
                SystemId = clientSystemId,
            };

            var repoMock = new Mock <IClientRepository>(MockBehavior.Strict);

            repoMock.Setup(x => x.CheckIfClientExists(clientSystemId)).ReturnsAsync(false).Verifiable();

            var handler = new UpdateClientCommandHandler(repoMock.Object,
                                                         Mock.Of <ILogger <UpdateClientCommandHandler> >());

            Boolean result = await handler.Handle(new UpdateClientCommand(request), CancellationToken.None);

            Assert.False(result);

            repoMock.Verify();
        }
예제 #6
0
        private static async Task SendRequest(bool repoResult, bool setPassword, bool changeClientId)
        {
            Random random         = new Random();
            Guid   clientSystemId = random.NextGuid();

            var request = new UpdateClientRequest
            {
                SystemId               = clientSystemId,
                ClientId               = random.GetAlphanumericString(),
                AllowedCorsOrigins     = new[] { "https://myapp.com" },
                AllowedScopes          = new[] { "test", "testus" },
                DisplayName            = random.GetAlphanumericString(),
                FrontChannelLogoutUri  = "http://mylogout.com/logout",
                PostLogoutRedirectUris = new[] { "https://myapp2.com/logout-callback" },
                RedirectUris           = new[] { "https://myapp2.com/login-callback" },
                RequirePkce            = false,
            };

            if (setPassword == true)
            {
                request.Password = "******";
            }

            BeerClient savedClient = GetSaveBeerClient(random, clientSystemId);


            var repoMock = new Mock <IClientRepository>(MockBehavior.Strict);

            repoMock.Setup(x => x.CheckIfClientExists(clientSystemId)).ReturnsAsync(true).Verifiable();
            repoMock.Setup(x => x.GetClientById(clientSystemId)).ReturnsAsync(savedClient).Verifiable();

            repoMock.Setup(x => x.UpdateClient(It.Is <BeerClient>(y =>
                                                                  y.DisplayName == request.DisplayName
                                                                  ))).ReturnsAsync(repoResult).Verifiable();

            if (changeClientId == false)
            {
                request.ClientId = savedClient.ClientId;
            }
            else
            {
                repoMock.Setup(x => x.CheckIfClientIdExists(request.ClientId, request.SystemId)).ReturnsAsync(false).Verifiable();
            }

            var handler = new UpdateClientCommandHandler(repoMock.Object,
                                                         Mock.Of <ILogger <UpdateClientCommandHandler> >());

            Boolean actual = await handler.Handle(new UpdateClientCommand(request), CancellationToken.None);

            Assert.Equal(repoResult, actual);

            Assert.Equal(request.ClientId, savedClient.ClientId);
            Assert.Equal(request.AllowedCorsOrigins, savedClient.AllowedCorsOrigins);
            Assert.Equal(request.AllowedScopes, savedClient.AllowedScopes);
            Assert.Equal(request.DisplayName, savedClient.DisplayName);
            Assert.False(savedClient.RequirePkce);
            Assert.Equal(request.FrontChannelLogoutUri, savedClient.FrontChannelLogoutUri);
            if (setPassword == false)
            {
                Assert.Equal("previousPassword".Sha256(), savedClient.HashedPassword);
            }
            else
            {
                Assert.Equal("mynewchangedpassword".Sha256(), savedClient.HashedPassword);
            }

            Assert.Equal(request.PostLogoutRedirectUris, savedClient.PostLogoutRedirectUris);
            Assert.Equal(request.RedirectUris, savedClient.RedirectUris);

            repoMock.Verify();
        }