Exemplo n.º 1
0
        public void TestCurrentUser()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user = client.GenerateObjectFromState <ParseUser>(state, "_User");

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(user));

            hub.CurrentUserController = mockCurrentUserController.Object;

            Assert.AreEqual(user, client.GetCurrentUser());
        }
        public Task TestTrackEventWithDimension()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseAnalyticsController> mockController = new Mock <IParseAnalyticsController> {
            };
            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(controller => controller.GetCurrentSessionTokenAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult("sessionToken"));

            hub.AnalyticsController   = mockController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            return(client.TrackAnalyticsEventAsync("SomeEvent", new Dictionary <string, string> {
                ["facebook"] = "hq"
            }).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);
                mockController.Verify(obj => obj.TrackEventAsync(It.Is <string>(eventName => eventName == "SomeEvent"), It.Is <IDictionary <string, string> >(dict => dict != null && dict.Count == 1), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Exemplo n.º 3
0
        public Task TestBecome()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object> {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseUserController> mockController = new Mock <IParseUserController> {
            };

            mockController.Setup(obj => obj.GetUserAsync("llaKcolnu", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(state));

            hub.UserController = mockController.Object;

            return(client.BecomeAsync("llaKcolnu").ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.GetUserAsync("llaKcolnu", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                ParseUser user = task.Result;
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("llaKcolnu", user.SessionToken);
            }));
        }
        public Task TestTrackAppOpened()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseAnalyticsController> mockController = new Mock <IParseAnalyticsController> {
            };
            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(controller => controller.GetCurrentSessionTokenAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult("sessionToken"));

            hub.AnalyticsController   = mockController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            return(client.TrackLaunchAsync().ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.TrackAppOpenedAsync(It.Is <string>(pushHash => pushHash == null), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Exemplo n.º 5
0
        public Task TestRevoke()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseSessionController> mockController = new Mock <IParseSessionController>();

            mockController.Setup(sessionController => sessionController.IsRevocableSessionToken(It.IsAny <string>())).Returns(true);

            hub.SessionController = mockController.Object;

            CancellationTokenSource source = new CancellationTokenSource {
            };

            return(client.RevokeSessionAsync("r:someSession", source.Token).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.RevokeAsync(It.Is <string>(sessionToken => sessionToken == "r:someSession"), source.Token), Times.Exactly(1));
            }));
        }
Exemplo n.º 6
0
        public void TestGetCurrentInstallation()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Guid guid = Guid.NewGuid();

            ParseInstallation installation = client.GenerateObjectFromState <ParseInstallation>(new MutableObjectState {
                ServerData = new Dictionary <string, object> {
                    ["installationId"] = guid.ToString()
                }
            }, "_Installation");

            Mock <IParseCurrentInstallationController> mockController = new Mock <IParseCurrentInstallationController>();

            mockController.Setup(obj => obj.GetAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(installation));

            hub.CurrentInstallationController = mockController.Object;

            ParseInstallation currentInstallation = client.GetCurrentInstallation();

            Assert.IsNotNull(currentInstallation);
            Assert.AreEqual(guid, currentInstallation.InstallationId);
        }
Exemplo n.º 7
0
        public Task TestUnlinkNonCurrentUser()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu",
                    ["authData"]     = new Dictionary <string, object>
                    {
                        ["parse"] = new Dictionary <string, object> {
                        }
                    }
                }
            };

            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["garden"] = "ofWords"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user = client.GenerateObjectFromState <ParseUser>(state, "_User");

            Mock <IParseObjectController> mockObjectController = new Mock <IParseObjectController>();

            mockObjectController.Setup(obj => obj.SaveAsync(It.IsAny <IObjectState>(), It.IsAny <IDictionary <string, IParseFieldOperation> >(), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(obj => obj.IsCurrent(user)).Returns(false);

            hub.ObjectController      = mockObjectController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            return(user.UnlinkFromAsync("parse", CancellationToken.None).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockObjectController.Verify(obj => obj.SaveAsync(It.IsAny <IObjectState>(), It.IsAny <IDictionary <string, IParseFieldOperation> >(), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                Assert.IsFalse(user.IsDirty);
                Assert.IsNotNull(user.AuthData);
                Assert.IsTrue(user.AuthData.ContainsKey("parse"));
                Assert.IsNull(user.AuthData["parse"]);
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("ofWords", user["garden"]);
            }));
        }
Exemplo n.º 8
0
        public Task TestUserFetch()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu",
                    ["username"]     = "******",
                    ["password"]     = "******"
                }
            };

            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["Alliance"] = "rekt"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user = client.GenerateObjectFromState <ParseUser>(state, "_User");

            Mock <IParseObjectController> mockObjectController = new Mock <IParseObjectController>();

            mockObjectController.Setup(obj => obj.FetchAsync(It.IsAny <IObjectState>(), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));

            hub.ObjectController      = mockObjectController.Object;
            hub.CurrentUserController = new Mock <IParseCurrentUserController> {
            }.Object;

            user["Alliance"] = "rekt";

            return(user.FetchAsync().ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockObjectController.Verify(obj => obj.FetchAsync(It.IsAny <IObjectState>(), It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                Assert.IsTrue(user.IsDirty);
                Assert.AreEqual("ihave", user.Username);
                Assert.IsTrue(user.State.ContainsKey("password"));
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("rekt", user["Alliance"]);
            }));
        }
Exemplo n.º 9
0
        public Task TestSendPush()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            MutablePushState state = new MutablePushState
            {
                Query = Client.GetInstallationQuery()
            };

            ParsePush thePush = new ParsePush(client);

            hub.PushController = GetMockedPushController(state);

            thePush.Alert = "Alert";
            state.Alert   = "Alert";

            return(thePush.SendAsync().ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);

                thePush.Channels = new List <string> {
                    { "channel" }
                };
                state.Channels = new List <string> {
                    { "channel" }
                };

                return thePush.SendAsync();
            }).Unwrap().ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);

                ParseQuery <ParseInstallation> query = new ParseQuery <ParseInstallation>(client, "aClass");

                thePush.Query = query;
                state.Query = query;

                return thePush.SendAsync();
            }).Unwrap().ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);
            }));
        }
Exemplo n.º 10
0
        public Task TestGetCurrentSession()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            IObjectState sessionState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "newllaKcolnu"
                }
            };

            Mock <IParseSessionController> mockController = new Mock <IParseSessionController>();

            mockController.Setup(obj => obj.GetSessionAsync(It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(sessionState));

            IObjectState userState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            ParseUser user = client.GenerateObjectFromState <ParseUser>(userState, "_User");

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(user));

            hub.SessionController     = mockController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            return(client.GetCurrentSessionAsync().ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.GetSessionAsync(It.Is <string>(sessionToken => sessionToken == "llaKcolnu"), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                ParseSession session = task.Result;
                Assert.AreEqual("newllaKcolnu", session.SessionToken);
            }));
        }
Exemplo n.º 11
0
        public Task TestLogIn()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu",
                    ["username"]     = "******",
                    ["password"]     = "******"
                }
            };

            IObjectState newState = new MutableObjectState
            {
                ObjectId = "some0neTol4v4"
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseUserController> mockController = new Mock <IParseUserController> {
            };

            mockController.Setup(obj => obj.LogInAsync("ihave", "adream", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));

            hub.UserController = mockController.Object;

            return(client.LogInAsync("ihave", "adream").ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.LogInAsync("ihave", "adream", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                ParseUser user = task.Result;
                Assert.IsFalse(user.IsDirty);
                Assert.IsNull(user.Username);
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
            }));
        }
Exemplo n.º 12
0
        public Task TestRevocableSession()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "r:llaKcolnu"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user = client.GenerateObjectFromState <ParseUser>(state, "_User");

            Mock <IParseSessionController> mockSessionController = new Mock <IParseSessionController>();

            mockSessionController.Setup(obj => obj.UpgradeToRevocableSessionAsync("llaKcolnu", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));

            hub.SessionController = mockSessionController.Object;

            return(user.UpgradeToRevocableSessionAsync(CancellationToken.None).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockSessionController.Verify(obj => obj.UpgradeToRevocableSessionAsync("llaKcolnu", It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));

                Assert.AreEqual("r:llaKcolnu", user.SessionToken);
            }));
        }
Exemplo n.º 13
0
        public Task TestCloudFunctions()
        {
            MutableServiceHub hub = new MutableServiceHub { };
            ParseClient client = new ParseClient(new ServerConnectionData { Test = true }, hub);

            Mock<IParseCloudCodeController> mockController = new Mock<IParseCloudCodeController>();
            mockController.Setup(obj => obj.CallFunctionAsync<IDictionary<string, object>>(It.IsAny<string>(), It.IsAny<IDictionary<string, object>>(), It.IsAny<string>(), It.IsAny<IServiceHub>(), It.IsAny<CancellationToken>())).Returns(Task.FromResult<IDictionary<string, object>>(new Dictionary<string, object> { ["fosco"] = "ben", ["list"] = new List<object> { 1, 2, 3 } }));

            hub.CloudCodeController = mockController.Object;
            hub.CurrentUserController = new Mock<IParseCurrentUserController> { }.Object;

            return client.CallCloudCodeFunctionAsync<IDictionary<string, object>>("someFunction", null, CancellationToken.None).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);
                Assert.IsInstanceOfType(task.Result, typeof(IDictionary<string, object>));
                Assert.AreEqual("ben", task.Result["fosco"]);
                Assert.IsInstanceOfType(task.Result["list"], typeof(IList<object>));
            });
        }
Exemplo n.º 14
0
        public Task TestGetCurrentSessionWithNoCurrentUser()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseSessionController>     mockController            = new Mock <IParseSessionController>();
            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController>();

            hub.SessionController     = mockController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            return(client.GetCurrentSessionAsync().ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);
                Assert.IsNull(task.Result);
            }));
        }
Exemplo n.º 15
0
        public Task TestRequestPasswordReset()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            Mock <IParseUserController> mockController = new Mock <IParseUserController> {
            };

            hub.UserController = mockController.Object;

            return(client.RequestPasswordResetAsync("*****@*****.**").ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.RequestPasswordResetAsync("*****@*****.**", It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Exemplo n.º 16
0
        public Task TestUnsubscribe()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            List <string> channels = new List <string> {
            };

            hub.PushChannelsController = GetMockedPushChannelsController(channels);

            channels.Add("test");

            return(client.UnsubscribeToPushChannelAsync("test").ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);

                return client.UnsubscribeToPushChannelsAsync(new List <string> {
                    { "test" }
                });
            }).ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);

                CancellationTokenSource cancellationTokenSource = new CancellationTokenSource {
                };
                return client.UnsubscribeToPushChannelsAsync(new List <string> {
                    { "test" }
                }, cancellationTokenSource.Token);
            }).ContinueWith(task =>
            {
                Assert.IsTrue(task.IsCompleted);
                Assert.IsFalse(task.IsFaulted);
            }));
        }
Exemplo n.º 17
0
        public Task TestLogOut()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "r:llaKcolnu"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user = client.GenerateObjectFromState <ParseUser>(state, "_User");

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(user));

            Mock <IParseSessionController> mockSessionController = new Mock <IParseSessionController>();

            mockSessionController.Setup(c => c.IsRevocableSessionToken(It.IsAny <string>())).Returns(true);

            hub.CurrentUserController = mockCurrentUserController.Object;
            hub.SessionController     = mockSessionController.Object;

            return(client.LogOutAsync().ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockCurrentUserController.Verify(obj => obj.LogOutAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>()), Times.Exactly(1));
                mockSessionController.Verify(obj => obj.RevokeAsync("r:llaKcolnu", It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Exemplo n.º 18
0
        public Task TestUpgradeToRevocableSession()
        {
            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            Mock <IParseSessionController> mockController = new Mock <IParseSessionController>();

            mockController.Setup(obj => obj.UpgradeToRevocableSessionAsync(It.IsAny <string>(), It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(state));

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController>();

            hub.SessionController     = mockController.Object;
            hub.CurrentUserController = mockCurrentUserController.Object;

            CancellationTokenSource source = new CancellationTokenSource {
            };

            return(client.UpgradeToRevocableSessionAsync("someSession", source.Token).ContinueWith(task =>
            {
                Assert.IsFalse(task.IsFaulted);
                Assert.IsFalse(task.IsCanceled);

                mockController.Verify(obj => obj.UpgradeToRevocableSessionAsync(It.Is <string>(sessionToken => sessionToken == "someSession"), It.IsAny <IServiceHub>(), source.Token), Times.Exactly(1));

                Assert.AreEqual("llaKcolnu", task.Result);
            }));
        }
Exemplo n.º 19
0
        public void TestIsAuthenticatedWithOtherParseUser()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "wagimanPutraPetir",
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            IObjectState state2 = new MutableObjectState
            {
                ObjectId   = "wagimanPutraPetir2",
                ServerData = new Dictionary <string, object>
                {
                    ["sessionToken"] = "llaKcolnu"
                }
            };

            MutableServiceHub hub = new MutableServiceHub {
            };
            ParseClient client    = new ParseClient(new ServerConnectionData {
                Test = true
            }, hub);

            ParseUser user  = client.GenerateObjectFromState <ParseUser>(state, "_User");
            ParseUser user2 = client.GenerateObjectFromState <ParseUser>(state2, "_User");

            Mock <IParseCurrentUserController> mockCurrentUserController = new Mock <IParseCurrentUserController> {
            };

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <IServiceHub>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(user));

            hub.CurrentUserController = mockCurrentUserController.Object;

            Assert.IsFalse(user2.IsAuthenticated);
        }