public async Task Login_InvalidCredentials_ShouldThrowAuthenticationException() { // Arrange var email = $"{Guid.NewGuid().ToString()}@example.com"; await FirebaseHelper.CreateUser(email, Constants.Password, Constants.DisplayName); // Act & Assert Assert.That(async() => await AuthService.LoginWithEmailAndPassword(email, Constants.Password + "flop"), Throws.Exception.TypeOf <AuthenticationException>()); }
public async Task Login_AlreadyLoggedIn_ShouldThrowAlreadyLoggedInException() { // Arrange var email = $"{Guid.NewGuid().ToString()}@example.com"; await FirebaseHelper.CreateUser(email, Constants.Password, Constants.DisplayName); // Act & Assert await AuthService.LoginWithEmailAndPassword(email, Constants.Password); Assert.That(async() => await AuthService.LoginWithEmailAndPassword(email, Constants.Password), Throws.Exception.TypeOf <AlreadyLoggedInException>()); }
public async Task Login_ValidCredentials_ShouldEmitCurrentUserChanged() { // Arrange var wasCalled = false; var email = $"{Guid.NewGuid().ToString()}@example.com"; await FirebaseHelper.CreateUser(email, Constants.Password, Constants.DisplayName); AuthService.CurrentUserChanged += u => { wasCalled = true; }; // Act var user = await AuthService.LoginWithEmailAndPassword(email, Constants.Password); // Assert Assert.IsTrue(wasCalled); Assert.AreEqual(Constants.DisplayName, user?.DisplayName); Assert.AreEqual(email, user?.Email); }
public async Task Logout_UserLoggedIn_ShouldEmitCurrentUserChangedAndPutCurrentUserToNull() { // Arrange var numberOfCalls = 0; var email = $"{Guid.NewGuid().ToString()}@example.com"; await FirebaseHelper.CreateUser(email, Constants.Password, Constants.DisplayName); AuthService.CurrentUserChanged += u => { ++numberOfCalls; }; // Act await AuthService.LoginWithEmailAndPassword(email, Constants.Password); AuthService.Logout(); // Assert Assert.AreEqual(2, numberOfCalls); Assert.IsNull(AuthService.CurrentUser); }