Beispiel #1
0
        public void Then_response_invited_is_true()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();
            var response = CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Result;

            response.Invited.Should().BeTrue();
        }
        public void Then_CreateInvitationResult_is_returned()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();
            var result = CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Result;

            result.Should().BeOfType <CreateInvitationResponse>();
        }
Beispiel #3
0
        public void Then_Invitation_is_created_in_database()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();

            CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Wait();

            LoginContext.Invitations.Count().Should().Be(1);
        }
        public void Then_existing_record_is_deleted()
        {
            CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Wait();

            LoginContext.Invitations.Count(i => i.Email == "*****@*****.**" && i.Id == _existingInvitationId).Should().Be(0);
            LoginContext.Invitations.Count(i => i.Email == "*****@*****.**" && i.Id != _existingInvitationId).Should().Be(1);
            LoginContext.Invitations.Count(i => i.Email != "*****@*****.**").Should().Be(1);
        }
        public void Then_new_id_and_code_do_not_match_existing()
        {
            CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Wait();

            var newInvitation = LoginContext.Invitations.Single(i => i.Email == "*****@*****.**");

            newInvitation.Id.Should().NotBe(_existingInvitationId);
        }
        public void Then_no_invitation_is_created_or_sent()
        {
            CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Wait();

            LoginContext.Invitations.Count().Should().Be(0);
            EmailService.DidNotReceiveWithAnyArgs()
            .SendInvitationEmail(Arg.Any <InvitationEmailViewModel>());
        }
        public void Then_response_states_that_user_already_exists()
        {
            var response = CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Result;

            response.Message.Should().Be("User already exists");
            response.Invited.Should().Be(false);
            response.ExistingUserId.Should().Be(_userId);
        }
Beispiel #8
0
        public void Then_response_invitationId_is_correct()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();
            var response = CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Result;

            var invitationCreated = LoginContext.Invitations.Single();

            response.InvitationId.Should().Be(invitationCreated.Id);
        }
Beispiel #9
0
        public void Then_response_states_that_client_does_not_exist()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();

            createInvitationRequest.ClientId = Guid.NewGuid();
            var response = CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Result;

            response.Message.Should().Be("Client does not exist");
            response.Invited.Should().Be(false);
        }
 public void Then_user_already_exists_email_is_sent()
 {
     CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Wait();
     EmailService.Received().SendUserExistsEmail(Arg.Is <UserExistsEmailViewModel>(
                                                     vm =>
                                                     vm.ServiceName == "Acme Service" &&
                                                     vm.ServiceTeam == "Acme Service Team" &&
                                                     vm.Contact == _createInvitationRequest.GivenName &&
                                                     vm.LoginLink == "https://serviceurl" &&
                                                     vm.EmailAddress == _createInvitationRequest.Email));
 }
        public void SetUp()
        {
            BuildLoginContext();

            EmailService = Substitute.For <IEmailService>();
            LoginConfig  = Substitute.For <ILoginConfig>();
            LoginConfig.BaseUrl.Returns("https://baseurl");
            UserService = Substitute.For <IUserService>();

            CreateInvitationHandler = BuildCreateInvitationHandler();
        }
        public void Then_new_Invitation_is_inserted_with_Valid_until_set_one_hour_ahead()
        {
            SystemTime.UtcNow = () => new DateTime(2019, 7, 9, 08, 12, 43);
            var expectedValidUntilTime = SystemTime.UtcNow().AddHours(1);

            var createInvitationRequest = BuildCreateInvitationRequest();

            CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Wait();

            var insertedInvitation = LoginContext.Invitations.Single();

            insertedInvitation.ValidUntil.Should().Be(expectedValidUntilTime);
        }
Beispiel #13
0
        public void Then_Request_arguments_are_in_Invitation_created_in_database()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();

            CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Wait();

            var insertedInvitation = LoginContext.Invitations.Single();

            insertedInvitation.Email.Should().Be(createInvitationRequest.Email);
            insertedInvitation.GivenName.Should().Be(createInvitationRequest.GivenName);
            insertedInvitation.FamilyName.Should().Be(createInvitationRequest.FamilyName);
            insertedInvitation.SourceId.Should().Be(createInvitationRequest.SourceId);
            insertedInvitation.CallbackUri.Should().Be(createInvitationRequest.Callback.ToString());
            insertedInvitation.UserRedirectUri.Should().Be(createInvitationRequest.UserRedirect.ToString());
            insertedInvitation.ClientId.Should().Be(createInvitationRequest.ClientId.ToString());
        }
        public void Then_Invited_is_false()
        {
            var invalidClientId = Guid.NewGuid();

            LoginContext.Clients.Add(new Client()
            {
                Id = invalidClientId, AllowInvitationSignUp = false
            });
            LoginContext.SaveChanges();

            var createInvitationRequest = BuildCreateInvitationRequest();

            createInvitationRequest.ClientId = invalidClientId;
            var result = CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Result;

            result.Invited.Should().BeFalse();
            result.Message.Should().Be("Client is not authorised for Invitiation Signup");
        }
        public void Then_an_email_is_sent_out_to_the_invited_user_with_correct_replacement_values()
        {
            var createInvitationRequest = BuildCreateInvitationRequest();

            LoginConfig.BaseUrl.Returns("https://goodurl/");

            CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None).Wait();

            var insertedInvitation = LoginContext.Invitations.Single();

            EmailService.Received().SendInvitationEmail(Arg.Is <InvitationEmailViewModel>(vm =>
                                                                                          vm.Contact == "InvitedGivenName" &&
                                                                                          vm.ServiceName == "Acme Service" &&
                                                                                          vm.ServiceTeam == "Acme Service Team" &&
                                                                                          vm.LoginLink == "https://goodurl/Invitations/CreatePassword/" + insertedInvitation.Id &&
                                                                                          vm.EmailAddress == createInvitationRequest.Email &&
                                                                                          vm.TemplateId == InvitationTemplateId));
        }
Beispiel #16
0
        public async Task Then_LogEntry_created_to_log_invitation()
        {
            SystemTime.UtcNow = () => new DateTime(2019, 1, 1, 1, 1, 1);
            var logId = Guid.NewGuid();

            GuidGenerator.NewGuid = () => logId;

            var createInvitationRequest = BuildCreateInvitationRequest();
            await CreateInvitationHandler.Handle(createInvitationRequest, CancellationToken.None);

            var logEntry = LoginContext.UserLogs.Single();

            var expectedLogEntry = new UserLog
            {
                Id       = logId,
                DateTime = SystemTime.UtcNow(),
                Email    = "*****@*****.**",
                Action   = "Invite",
                Result   = "Invited"
            };

            logEntry.Should().BeEquivalentTo(expectedLogEntry);
        }
        public void Then_user_service_is_checked_for_existing_user()
        {
            CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Wait();

            UserService.Received().FindByEmail("*****@*****.**");
        }
        public void Then_new_new_invite_is_created()
        {
            var response = CreateInvitationHandler.Handle(_createInvitationRequest, CancellationToken.None).Result;

            response.Invited.Should().BeTrue();
        }
        public void And_Request_arguments_missing_Then_throw_ArgumentException()
        {
            var createInvitationRequest = BuildEmptyCreateInvitationRequest();

            CreateInvitationHandler.Invoking(h => { h.Handle(createInvitationRequest, CancellationToken.None).Wait(); }).Should().Throw <ArgumentException>();
        }