public void Test_LoginWithFacebookToken_With_TokenExpiration() { Kii.Initialize(APP_ID, APP_KEY, Kii.Site.US); // mock http client MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; MockHttpClient client = factory.Client; // set login response client.AddResponse(200, "{" + "\"id\" : \"efgh\"," + "\"access_token\" : \"dummyToken\"," + "\"expires_in\" : 3600," + "\"new_user_created\" : false" + "}"); // set refresh response client.AddResponse(200, "{" + "\"id\" : \"efgh\"," + "\"username\" : \"dummyUser\"" + "}"); // set access token expiration Kii.AccessTokenExpiration = 3600; Assert.AreEqual(3600, Kii.AccessTokenExpiration); // perform login. Assert.IsNull(KiiUser.CurrentUser); KiiUser.LoginWithFacebookToken("dummyFbToken"); Assert.IsNotNull(KiiUser.CurrentUser); IDictionary tokenBundle = KiiUser.CurrentUser.GetAccessTokenDictionary(); Assert.AreEqual("dummyToken", tokenBundle["access_token"]); DateTime expiresAt = (DateTime)tokenBundle["expires_at"]; Assert.IsTrue(DateTime.Compare(expiresAt, DateTime.UtcNow) > 0); // verify login request string url = Utils.Path(ConstantValues.DEFAULT_BASE_URL, "apps", APP_ID, "integration", "facebook"); Assert.AreEqual(url, client.RequestUrl[0]); Assert.AreEqual(KiiHttpMethod.POST, client.RequestMethod[0]); MockHttpHeaderList headerList = client.RequestHeader[0]; Assert.AreEqual(APP_ID, headerList["X-Kii-AppID"]); Assert.AreEqual(APP_KEY, headerList["X-Kii-AppKey"]); Assert.IsTrue(headerList["X-Kii-SDK"].StartsWith("sn=cs;sv=")); // verify body. JsonObject requestBody = new JsonObject(client.RequestBody[0]); Assert.AreEqual(2, requestBody.Length()); Assert.AreEqual("dummyFbToken", requestBody.GetString("accessToken")); Assert.IsTrue(requestBody.GetLong("expiresAt") >= CurrentTimeMillis()); }
public void Test_LoginWithFacebookToken_Async() { // mock http client MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.AsyncHttpClientFactory = factory; MockHttpClient client = factory.Client; // set refresh response this.setFBLoginResponse(client); this.setRefreshResponse(client); // perform login. Assert.IsNull(KiiUser.CurrentUser); CountDownLatch cd = new CountDownLatch(1); KiiUser user = null; Exception exp = null; KiiUser.LoginWithFacebookToken("fbtoken-dummy", (KiiUser usr, Exception e) => { user = usr; exp = e; cd.Signal(); }); if (!cd.Wait()) { Assert.Fail("Callback has not called."); } Assert.IsNull(exp); Assert.IsNotNull(user); // verify properties for return logged in user. Assert.AreEqual("user22222", user.ID); Assert.AreEqual("dummyAccessToken2", user.GetAccessTokenDictionary() ["access_token"]); Assert.AreEqual("User 2", user.Displayname); // verify social access token dictionary. Dictionary <string, object> dict = user.GetSocialAccessTokenDictionary(); Assert.AreEqual(true, dict["kii_new_user"]); Assert.AreEqual("100000188475423", dict["provider_user_id"]); Assert.AreEqual(KiiCorp.Cloud.Storage.Connector.Provider.FACEBOOK, dict["provider"]); Assert.AreEqual("fbtoken-dummy", dict["oauth_token"]); // verify properties for current user. user = KiiUser.CurrentUser; Assert.AreEqual("user22222", user.ID); Assert.AreEqual("dummyAccessToken2", user.GetAccessTokenDictionary() ["access_token"]); Assert.AreEqual("User 2", user.Displayname); // verify social access token dictionary. dict = user.GetSocialAccessTokenDictionary(); Assert.AreEqual(true, dict["kii_new_user"]); Assert.AreEqual("100000188475423", dict["provider_user_id"]); Assert.AreEqual(KiiCorp.Cloud.Storage.Connector.Provider.FACEBOOK, dict["provider"]); Assert.AreEqual("fbtoken-dummy", dict["oauth_token"]); }
public void Test_LoginWithFacebookToken() { // setup mock http client MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; MockHttpClient client = (MockHttpClient)factory.Client; // set response this.setFBLoginResponse(client); this.setRefreshResponse(client); // verify properties for return logged in user. KiiUser user = KiiUser.LoginWithFacebookToken("fbtoken-dummy"); Assert.AreEqual("user22222", user.ID); Assert.AreEqual("dummyAccessToken2", user.GetAccessTokenDictionary() ["access_token"]); Assert.AreEqual("User 2", user.Displayname); // verify social access token dictionary. Dictionary <string, object> dict = user.GetSocialAccessTokenDictionary(); Assert.AreEqual(true, dict["kii_new_user"]); Assert.AreEqual("100000188475423", dict["provider_user_id"]); Assert.AreEqual(KiiCorp.Cloud.Storage.Connector.Provider.FACEBOOK, dict["provider"]); Assert.AreEqual("fbtoken-dummy", dict["oauth_token"]); // verify properties for current user. user = KiiUser.CurrentUser; Assert.AreEqual("user22222", user.ID); Assert.AreEqual("dummyAccessToken2", user.GetAccessTokenDictionary() ["access_token"]); Assert.AreEqual("User 2", user.Displayname); // verify social access token dictionary. dict = user.GetSocialAccessTokenDictionary(); Assert.AreEqual(true, dict["kii_new_user"]); Assert.AreEqual("100000188475423", dict["provider_user_id"]); Assert.AreEqual(KiiCorp.Cloud.Storage.Connector.Provider.FACEBOOK, dict["provider"]); Assert.AreEqual("fbtoken-dummy", dict["oauth_token"]); }
public void Test_FBLogin_After_PseudoUserCreation() { // setup mock http client MockHttpClientFactory factory = new MockHttpClientFactory(); Kii.HttpClientFactory = factory; MockHttpClient client = (MockHttpClient)factory.Client; // set response this.setPseudoUserCreationResponse(client); this.setFBLoginResponse(client); this.setRefreshResponse(client); KiiUser user = KiiUser.RegisterAsPseudoUser(null); Assert.AreEqual("user11111", user.ID); Assert.AreEqual("dummyAccessToken1", user.GetAccessTokenDictionary() ["access_token"]); KiiUser.LoginWithFacebookToken("fbtoken-dummy"); System.Collections.Generic.IList <MockHttpHeaderList> l = client.RequestHeader; string auth = l[2]["Authorization"]; Assert.AreEqual("Bearer " + "dummyAccessToken2", auth); user = KiiUser.CurrentUser; Assert.AreEqual("user22222", user.ID); Assert.AreEqual("dummyAccessToken2", user.GetAccessTokenDictionary() ["access_token"]); Assert.AreEqual("User 2", user.Displayname); // verify social access token dictionary. Dictionary <string, object> dict = user.GetSocialAccessTokenDictionary(); Assert.AreEqual(true, dict["kii_new_user"]); Assert.AreEqual("100000188475423", dict["provider_user_id"]); Assert.AreEqual(KiiCorp.Cloud.Storage.Connector.Provider.FACEBOOK, dict["provider"]); Assert.AreEqual("fbtoken-dummy", dict["oauth_token"]); }