public void TestSetTokensFiresEvent() { var credentials = new MeliCredentials(MeliSite.Panama, 123456, "secret", "oldToken"); credentials.TokensChanged += (sender, args) => receivedEvents.Add(args); var model = new TokenResponse { AccessToken = "access", RefreshToken = "refresh" }; credentials.SetTokens(model); Assert.AreEqual(1, receivedEvents.Count); Assert.AreSame(model, receivedEvents[0].Info); model.AccessToken = "new"; model.RefreshToken = "value"; Assert.AreEqual("oldToken", model.PreviousAccessToken); Assert.AreEqual("oldToken", receivedEvents[0].Info.PreviousAccessToken); credentials.SetTokens(model); Assert.AreEqual(2, receivedEvents.Count); Assert.AreSame(model, receivedEvents[0].Info); Assert.AreSame(receivedEvents[0].Info, receivedEvents[1].Info); Assert.AreEqual("access", model.PreviousAccessToken); Assert.AreEqual("access", receivedEvents[1].Info.PreviousAccessToken); }
public void TestSetTokens() { var credentials = new MeliCredentials(MeliSite.Panama, 123456, "secret", "oldToken", "oldRefreshToken"); var model = new TokenResponse {AccessToken = "newToken", RefreshToken = "newRefreshToken"}; credentials.SetTokens(model); Assert.AreEqual("newToken", credentials.AccessToken); Assert.AreEqual("oldToken", model.PreviousAccessToken); Assert.AreEqual("newRefreshToken", credentials.RefreshToken); }
public async void TestAuthorizeAsyncIsSuccessfull() { service.Credentials.Site = MeliSite.Mexico; var eventArgs = new List<MeliTokenEventArgs>(); service.Credentials.TokensChanged += (sender, args) => eventArgs.Add(args); service.Credentials.Site = MeliSite.Mexico; var response = new TokenResponse { AccessToken = "valid token", RefreshToken = "valid refresh token" }; mockHttp.Expect(HttpMethod.Post, "https://api.mercadolibre.com/oauth/token") .WithQueryString("grant_type", "authorization_code") .WithQueryString("client_id", "123456") .WithQueryString("client_secret", "secret") .WithQueryString("code", "valid code with refresh token") .WithQueryString("redirect_uri", "https://someurl.com") .Respond("application/json", JsonConvert.SerializeObject(response)); var success = await service.AuthorizeAsync("valid code with refresh token", "https://someurl.com"); Assert.IsTrue(success); Assert.AreEqual("valid token", service.Credentials.AccessToken); Assert.AreEqual("valid refresh token", service.Credentials.RefreshToken); Assert.AreEqual(1, eventArgs.Count); Assert.AreEqual("valid token", eventArgs[0].Info.AccessToken); Assert.AreEqual("valid refresh token", eventArgs[0].Info.RefreshToken); mockHttp.VerifyNoOutstandingExpectation(); }
/// <summary> /// Sets the tokens. /// </summary> /// <param name="model">The model.</param> /// <returns></returns> /// <remarks> /// Fires the /// <see cref="OnTokensChanged" /> event if the token values have changed. /// Listen to this event if you need to persists the tokens. /// </remarks> public MeliCredentials SetTokens(TokenResponse model) { if (AccessToken != model.AccessToken || RefreshToken != model.RefreshToken) { model.PreviousAccessToken = AccessToken; OnTokensChanged(new MeliTokenEventArgs {Info = model}); } AccessToken = model.AccessToken; RefreshToken = model.RefreshToken; return this; }