public async Task Should_create_an_Account_for_invites_to_new_users()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    =
                new AcceptInvitation("arne", "pass", invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            _accountRepository
            .WhenForAnyArgs(x => x.CreateAsync(null))
            .Do(x => x.Arg <Account>().SetId(52));
            var principal = PrincipalHelper.Create(52, "arne");


            var actual = await _sut.AcceptInvitation(principal, request);

            await _accountRepository.Received().CreateAsync(Arg.Any <Account>());

            var evt = _messageBus.Method("SendAsync").Arg <InvitationAccepted>();

            evt.AccountId.Should().Be(52);
        }
        Should_publish_AccountActivated_if_a_new_account_is_created_as_we_bypass_the_regular_account_registration_flow()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    =
                new AcceptInvitation("arne", "pass", invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            _accountRepository
            .WhenForAnyArgs(x => x.CreateAsync(null))
            .Do(x => x.Arg <Account>().SetId(52));
            var principal = PrincipalHelper.Create(52, "arne");


            var actual = await _sut.AcceptInvitation(principal, request);

            await _messageBus.Received().SendAsync(principal, Arg.Any <AccountActivated>());

            var evt = _messageBus.Method("SendAsync").Arg <AccountActivated>();

            evt.AccountId.Should().Be(52);
        }
        public async Task Should_ignore_invitations_where_the_key_is_not_registered_in_the_db()
        {
            var request = new AcceptInvitation(InvitedAccountId, "invalid")
            {
                AcceptedEmail = "*****@*****.**"
            };
            var principal = PrincipalHelper.Create(52, "arne");

            var actual = await _sut.AcceptInvitation(principal, request);

            actual.Should().BeNull();
        }
Пример #4
0
        public async Task Should_ignore_invitations_where_the_key_is_not_registered_in_the_db()
        {
            var request = new AcceptInvitation(InvitedAccountId, "invalid")
            {
                AcceptedEmail = "*****@*****.**"
            };

            _sut.Principal = PrincipalHelper.Create(52, "arne");

            var actual = await _sut.ExecuteAsync(request);

            AssertionExtensions.Should((object)actual).BeNull();
        }
Пример #5
0
        public async Task Should_delete_invitation_when_its_accepted_to_prevent_creating_multiple_accounts_with_the_same_invitation_key()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    = new AcceptInvitation(InvitedAccountId, invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            _sut.Principal = PrincipalHelper.Create(52, "arne");

            var actual = await _sut.ExecuteAsync(request);

            AssertionExtensions.Should((object)actual).NotBeNull();
        }
Пример #6
0
        public async Task Should_notify_system_of_the_accepted_invitation()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    = new AcceptInvitation(InvitedAccountId, invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            _sut.Principal = PrincipalHelper.Create(52, "arne");

            var actual = await _sut.ExecuteAsync(request);

            await _eventBus.Received().PublishAsync(Arg.Any <InvitationAccepted>());

            var evt = _eventBus.Method("PublishAsync").Arg <InvitationAccepted>();

            AssertionExtensions.Should((string)evt.AcceptedEmailAddress).Be(request.AcceptedEmail);
            AssertionExtensions.Should((int)evt.AccountId).Be(InvitedAccountId);
            AssertionExtensions.Should((int)evt.ApplicationIds[0]).Be(1);
            AssertionExtensions.Should((string)evt.UserName).Be(_invitedAccount.UserName);
        }
        public async Task Should_notify_system_of_the_accepted_invitation()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    =
                new AcceptInvitation(InvitedAccountId, invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            var principal = PrincipalHelper.Create(52, "arne");

            var actual = await _sut.AcceptInvitation(principal, request);

            await _messageBus.Received().SendAsync(principal, Arg.Any <InvitationAccepted>());

            var evt = _messageBus.Method("SendAsync").Arg <InvitationAccepted>();

            evt.AcceptedEmailAddress.Should().Be(request.AcceptedEmail);
            evt.AccountId.Should().Be(InvitedAccountId);
            evt.ApplicationIds[0].Should().Be(1);
            evt.UserName.Should().Be(_invitedAccount.UserName);
        }
Пример #8
0
        public async Task Should_publish_AccountActivated_if_a_new_account_is_created_as_we_bypass_the_regular_account_registration_flow()
        {
            var invitation = new Invitation("*****@*****.**", "inviter");
            var request    = new AcceptInvitation("arne", "pass", invitation.InvitationKey)
            {
                AcceptedEmail = "*****@*****.**"
            };

            invitation.Add(1, "arne");
            _repository.GetByInvitationKeyAsync(request.InvitationKey).Returns(invitation);
            _accountRepository
            .WhenForAnyArgs(x => x.CreateAsync(null))
            .Do(x => x.Arg <Account>().SetId(52));
            _sut.Principal = PrincipalHelper.Create(52, "arne");


            await _sut.ExecuteAsync(request);

            await _eventBus.Received().PublishAsync(Arg.Any <AccountActivated>());

            var evt = _eventBus.Method("PublishAsync").Arg <AccountActivated>();

            AssertionExtensions.Should((int)evt.AccountId).Be(52);
        }