public async Task Test_TraktAuthenticationModule_CheckIfAuthorizationIsExpiredOrWasRevoked_Failed_Revoked_AutoRefresh() { string authorizationJson = await TestUtility.SerializeObject(MockAuthorization); authorizationJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetAuthenticationMockClient(); client.Authorization = MockAuthorization; // First response, if authorization was revoked TestUtility.AddMockExpectationResponse((TestHttpClientProvider)client.HttpClientProvider, CHECK_ACCESS_TOKEN_URI, HttpStatusCode.Unauthorized); // Second response for autoRefresh == true TestUtility.AddMockExpectationResponse((TestHttpClientProvider)client.HttpClientProvider, GET_AUTHORIZATION_URI, MockAuthorizationRefreshPostContent, authorizationJson); Pair <bool, TraktResponse <ITraktAuthorization> > responseValues = await client.Authentication.CheckIfAuthorizationIsExpiredOrWasRevokedAsync(true); TestUtility.VerifyNoOutstandingExpectations((TestHttpClientProvider)client.HttpClientProvider); responseValues.Should().NotBeNull(); responseValues.First.Should().BeTrue(); TraktResponse <ITraktAuthorization> response = responseValues.Second; response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktAuthorization responseAuthorization = response.Value; responseAuthorization.Should().NotBeNull(); responseAuthorization.AccessToken.Should().Be(MockAuthorization.AccessToken); responseAuthorization.TokenType.Should().Be(MockAuthorization.TokenType); responseAuthorization.ExpiresInSeconds.Should().Be(MockAuthorization.ExpiresInSeconds); responseAuthorization.RefreshToken.Should().Be(MockAuthorization.RefreshToken); responseAuthorization.Scope.Should().Be(MockAuthorization.Scope); responseAuthorization.CreatedAt.Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1800)); responseAuthorization.IsExpired.Should().BeFalse(); ITraktAuthorization clientAccessToken = client.Authorization; clientAccessToken.Should().NotBeNull(); clientAccessToken.AccessToken.Should().Be(responseAuthorization.AccessToken); clientAccessToken.TokenType.Should().Be(responseAuthorization.TokenType); clientAccessToken.ExpiresInSeconds.Should().Be(responseAuthorization.ExpiresInSeconds); clientAccessToken.RefreshToken.Should().Be(responseAuthorization.RefreshToken); clientAccessToken.Scope.Should().Be(responseAuthorization.Scope); clientAccessToken.CreatedAt.Should().Be(responseAuthorization.CreatedAt); clientAccessToken.IsExpired.Should().BeFalse(); }
public async Task Test_TraktAuthenticationModule_PollForAuthorization_Polling() { string authorizationJson = await TestUtility.SerializeObject(MockAuthorization); authorizationJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetAuthenticationMockClient(); client.Authentication.Device = MockDevice; // First response: BadRequest => polling TestUtility.AddMockExpectationResponse((TestHttpClientProvider)client.HttpClientProvider, POLL_FOR_AUTHORIZATION_URI, MockAuthorizationPollingPostContent, authorizationJson, HttpStatusCode.BadRequest); // Second response: Ok => success TestUtility.AddMockExpectationResponse((TestHttpClientProvider)client.HttpClientProvider, POLL_FOR_AUTHORIZATION_URI, MockAuthorizationPollingPostContent, authorizationJson, HttpStatusCode.OK); TraktResponse <ITraktAuthorization> response = await client.Authentication.PollForAuthorizationAsync(); TestUtility.VerifyNoOutstandingExpectations((TestHttpClientProvider)client.HttpClientProvider); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktAuthorization responseAuthorization = response.Value; responseAuthorization.Should().NotBeNull(); responseAuthorization.AccessToken.Should().Be(MockAuthorization.AccessToken); responseAuthorization.TokenType.Should().Be(MockAuthorization.TokenType); responseAuthorization.ExpiresInSeconds.Should().Be(MockAuthorization.ExpiresInSeconds); responseAuthorization.RefreshToken.Should().Be(MockAuthorization.RefreshToken); responseAuthorization.Scope.Should().Be(MockAuthorization.Scope); responseAuthorization.CreatedAt.Should().BeCloseTo(DateTime.UtcNow, CLOSE_TO_PRECISION); responseAuthorization.IsExpired.Should().BeFalse(); ITraktAuthorization clientAuthorization = client.Authorization; clientAuthorization.Should().NotBeNull(); clientAuthorization.AccessToken.Should().Be(responseAuthorization.AccessToken); clientAuthorization.TokenType.Should().Be(responseAuthorization.TokenType); clientAuthorization.ExpiresInSeconds.Should().Be(responseAuthorization.ExpiresInSeconds); clientAuthorization.RefreshToken.Should().Be(responseAuthorization.RefreshToken); clientAuthorization.Scope.Should().Be(responseAuthorization.Scope); clientAuthorization.CreatedAt.Should().Be(responseAuthorization.CreatedAt); clientAuthorization.IsExpired.Should().BeFalse(); }