public async Task AccessTokenWithHeadersCredential() { var mockClock = new MockClock(); var tokenResponse = new TokenResponse { AccessToken = "ACCESS_TOKEN", ExpiresInSeconds = 60 * 10, IssuedUtc = DateTime.Now, RefreshToken = "REFRESH_TOKEN", }; var flowMock = new Mock <IAuthorizationCodeFlow>(MockBehavior.Strict); flowMock .Setup(flow => flow.Clock) .Returns(mockClock); flowMock .Setup(flow => flow.AccessMethod) .Returns(new AuthorizationHeaderAccessMethod()); var userCred = new UserCredential(flowMock.Object, "USER_ID", tokenResponse, "QUOTA_PROJECT"); ICredential cred = new GoogleCredential(userCred); var httpHandler = new FakeHandler(); var httpClient = new Http.ConfigurableHttpClient(new Http.ConfigurableMessageHandler(httpHandler)); cred.Initialize(httpClient); await httpClient.GetAsync("http://localhost/TestRequest"); Assert.Equal("Bearer", httpHandler.RequestHeaders.Authorization.Scheme); Assert.Equal("ACCESS_TOKEN", httpHandler.RequestHeaders.Authorization.Parameter); Assert.True(httpHandler.RequestHeaders.TryGetValues("x-goog-user-project", out var values)); Assert.Single(values); Assert.Equal("QUOTA_PROJECT", values.First()); }
public async Task AccessTokenCredential() { const string fakeAccessToken = "FakeAccessToken"; // Create an access-token credential, and check the access token is correct. ICredential cred = GoogleCredential.FromAccessToken(fakeAccessToken); Assert.Equal(fakeAccessToken, await cred.GetAccessTokenForRequestAsync()); // Check the auth header is added correctly to an HTTP request. var httpHandler = new FakeHandler(); var httpClient = new Http.ConfigurableHttpClient(new Http.ConfigurableMessageHandler(httpHandler)); cred.Initialize(httpClient); await httpClient.GetAsync("http://localhost/TestRequest"); Assert.Equal("Bearer", httpHandler.RequestHeaders.Authorization.Scheme); Assert.Equal(fakeAccessToken, httpHandler.RequestHeaders.Authorization.Parameter); }