예제 #1
0
        public async Task Subscription_PrimitiveChildAdded_ShouldDeserializePrimitiveObject()
        {
            // Arrange
            await FirebaseHelper.ImportDatabase("NumberArray.json");

            Semaphore semaphore = new Semaphore(0, 7);
            bool      wasNumberProperlyDeserialized = false;

            Action <int> onChildAdded = (int number) =>
            {
                if (number == 6)
                {
                    wasNumberProperlyDeserialized = true;
                }
                semaphore.Release();
            };

            var childAddedSub = Database.Ref("Array").OnChildAdded(onChildAdded);

            // Act
            await Database.Ref("Array").Child("6").Set(6);

            // Assert
            WaitFor(7, semaphore);
            Assert.IsTrue(wasNumberProperlyDeserialized);

            // Teardown
            childAddedSub.Stop();
        }
예제 #2
0
        public async Task SetUp()
        {
            FirebaseHelper = new FirebaseHelper();
            Database       = new FirebaseDatabase(DatabaseUrl, () => Task.FromResult(DatabaseSecret));
            await FirebaseHelper.UpdateRules("AllowEverything.json");

            await FirebaseHelper.ImportDatabase("People.json");
        }
예제 #3
0
        public async Task Once_InvalidToken_ShouldThrowCouldNotParseAuthTokenException()
        {
            // Arrange
            FirebaseDatabase UnauthenticatedDatabase = new FirebaseDatabase(DatabaseUrl, () => Task.FromResult("2K7qdbC2X9nQNRzlqQC14XmsGPR6Y5phUfxC2B5Z"));
            await FirebaseHelper.UpdateRules("DenyEverything.json");

            // Act & Assert
            Assert.That(async() => await UnauthenticatedDatabase.Ref("People").Once <PeopleMap>(), Throws.Exception.InstanceOf <CouldNotParseAuthTokenException>());
        }
예제 #4
0
        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>());
        }
예제 #5
0
        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>());
        }
예제 #6
0
        public async Task Once_StringArray_ShouldDeserializeIntoList()
        {
            // Arrange
            await FirebaseHelper.ImportDatabase("StringArray.json");

            // Act
            var list = await Database.Ref("Array").Once <List <string> >();

            // Assert
            Assert.AreEqual("Helo", list[0]);
            Assert.AreEqual("Hey", list[1]);
            Assert.AreEqual("Bonjourno", list[2]);
            Assert.AreEqual("Hola", list[3]);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
 public async Task TearDown()
 {
     await FirebaseHelper.CleanUp();
 }
예제 #10
0
 public void SetUp()
 {
     FirebaseHelper = new FirebaseHelper();
     AuthService    = new FirebaseAuthenticationService();
 }