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(); }
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(); }
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(); }
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); }
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); }