public async Task Handle_NoEmailsGiven_ThrowsException() { //Arrange var fakeManagementApiClientFactory = Substitute.For <IManagementApiClientFactory>(); var fakeMediator = Substitute.For <IMediator>(); var handler = new CreateAuth0UserCommandHandler( fakeManagementApiClientFactory, fakeMediator); //Act var exception = await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await handler.Handle(new CreateAuth0UserCommand(Array.Empty <string>()), default)); //Assert Assert.IsNotNull(exception); }
public async Task Handle_ThreeEmailsGiven_CreatesThreeUsersLinkedIntoOne() { //Arrange var fakeManagementApiClientFactory = Substitute.For <IManagementApiClientFactory>(); var fakeManagementApiClient = await fakeManagementApiClientFactory.CreateAsync(); var firstCreatedUser = new User() { UserId = "user-1" }; fakeManagementApiClient .CreateUserAsync(Arg.Any <UserCreateRequest>()) .Returns( firstCreatedUser, new User() { UserId = "user-2" }, new User() { UserId = "user-3" }); var fakeMediator = Substitute.For <IMediator>(); var handler = new CreateAuth0UserCommandHandler( fakeManagementApiClientFactory, fakeMediator); //Act var createdUser = await handler.Handle( new CreateAuth0UserCommand(new [] { "*****@*****.**", "*****@*****.**", "*****@*****.**" }), default); //Assert Assert.AreSame(firstCreatedUser, createdUser); await fakeManagementApiClient .Received(2) .LinkUserAccountAsync( "user-1", Arg.Any <UserAccountLinkRequest>()); await fakeManagementApiClient .Received(1) .LinkUserAccountAsync( "user-1", Arg.Is <UserAccountLinkRequest>(args => args.UserId == "user-2")); await fakeManagementApiClient .Received(1) .LinkUserAccountAsync( "user-1", Arg.Is <UserAccountLinkRequest>(args => args.UserId == "user-3")); }
public async Task Handle_ThreeEmailsGivenAndOneCreationFails_DeletesAdditionalCreatedUser() { //Arrange var fakeManagementApiClientFactory = Substitute.For <IManagementApiClientFactory>(); var fakeManagementApiClient = await fakeManagementApiClientFactory.CreateAsync(); var firstCreatedUser = new User() { UserId = "user-1" }; fakeManagementApiClient .CreateUserAsync(Arg.Any <UserCreateRequest>()) .Returns( firstCreatedUser, new User() { UserId = "user-2" }, new User() { UserId = "user-3" }); fakeManagementApiClient .LinkUserAccountAsync( "user-1", Arg.Is <UserAccountLinkRequest>(args => args.UserId == "user-3")) .Throws(new TestException()); var fakeMediator = Substitute.For <IMediator>(); var handler = new CreateAuth0UserCommandHandler( fakeManagementApiClientFactory, fakeMediator); //Act var exception = await Assert.ThrowsExceptionAsync <TestException>(async() => await handler.Handle( new CreateAuth0UserCommand(new[] { "*****@*****.**", "*****@*****.**", "*****@*****.**" }), default)); //Assert Assert.IsNotNull(exception); await fakeManagementApiClient .Received(2) .LinkUserAccountAsync( "user-1", Arg.Any <UserAccountLinkRequest>()); await fakeManagementApiClient .Received(1) .DeleteUserAsync(Arg.Any <string>()); await fakeManagementApiClient .Received(1) .DeleteUserAsync( "user-3"); }