public void SetUp()
 {
     _mockLogger                 = new Mock <ILogger <UpdateClientCommandHandler> >();
     _mockClientService          = new Mock <IClientService>();
     _updateClientCommandHandler = new UpdateClientCommandHandler(_mockClientService.Object, _mockLogger.Object);
     _fixture = new Fixture();
 }
Пример #2
0
 public UpdateClientCommandHandlerTests()
 {
     _validator  = new Mock <IValidator <Client> >(MockBehavior.Strict);
     _unitOfWork = new Mock <IUnitOfWork>(MockBehavior.Strict);
     _validationMessageBuilder = new Mock <IValidationMessageBuilder>(MockBehavior.Strict);
     _sut = new UpdateClientCommandHandler(_unitOfWork.Object, _validationMessageBuilder.Object,
                                           _validator.Object);
 }
Пример #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
 public UpdateClientCommandHandlerTests()
 {
     clientId = CommandArrangeHelper.GetClientId(context);
     sut      = new UpdateClientCommandHandler(context);
 }
Пример #7
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();
        }