|
|
|
@ -145,16 +145,26 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
|
|
|
|
|
if (options.TestCase == "jwt_token_creds") |
|
|
|
|
{ |
|
|
|
|
#if !NETSTANDARD1_5 |
|
|
|
|
var googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); |
|
|
|
|
Assert.IsTrue(googleCredential.IsCreateScopedRequired); |
|
|
|
|
credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials()); |
|
|
|
|
#else |
|
|
|
|
// TODO(jtattermusch): implement this |
|
|
|
|
throw new NotImplementedException("Not supported on CoreCLR yet"); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (options.TestCase == "compute_engine_creds") |
|
|
|
|
{ |
|
|
|
|
#if !NETSTANDARD1_5 |
|
|
|
|
var googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); |
|
|
|
|
Assert.IsFalse(googleCredential.IsCreateScopedRequired); |
|
|
|
|
credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials()); |
|
|
|
|
#else |
|
|
|
|
// TODO(jtattermusch): implement this |
|
|
|
|
throw new NotImplementedException("Not supported on CoreCLR yet"); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
return credentials; |
|
|
|
|
} |
|
|
|
@ -245,7 +255,7 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("running client_streaming"); |
|
|
|
|
|
|
|
|
|
var bodySizes = new List<int> { 27182, 8, 1828, 45904 }.ConvertAll((size) => new StreamingInputCallRequest { Payload = CreateZerosPayload(size) }); |
|
|
|
|
var bodySizes = new List<int> { 27182, 8, 1828, 45904 }.Select((size) => new StreamingInputCallRequest { Payload = CreateZerosPayload(size) }); |
|
|
|
|
|
|
|
|
|
using (var call = client.StreamingInputCall()) |
|
|
|
|
{ |
|
|
|
@ -266,7 +276,7 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
var request = new StreamingOutputCallRequest |
|
|
|
|
{ |
|
|
|
|
ResponseType = PayloadType.Compressable, |
|
|
|
|
ResponseParameters = { bodySizes.ConvertAll((size) => new ResponseParameters { Size = size }) } |
|
|
|
|
ResponseParameters = { bodySizes.Select((size) => new ResponseParameters { Size = size }) } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
using (var call = client.StreamingOutputCall(request)) |
|
|
|
@ -276,7 +286,7 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
{ |
|
|
|
|
Assert.AreEqual(PayloadType.Compressable, res.Payload.Type); |
|
|
|
|
} |
|
|
|
|
CollectionAssert.AreEqual(bodySizes, responseList.ConvertAll((item) => item.Payload.Body.Length)); |
|
|
|
|
CollectionAssert.AreEqual(bodySizes, responseList.Select((item) => item.Payload.Body.Length)); |
|
|
|
|
} |
|
|
|
|
Console.WriteLine("Passed!"); |
|
|
|
|
} |
|
|
|
@ -398,6 +408,7 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
|
|
|
|
|
public static async Task RunOAuth2AuthTokenAsync(TestService.TestServiceClient client, string oauthScope) |
|
|
|
|
{ |
|
|
|
|
#if !NETSTANDARD1_5 |
|
|
|
|
Console.WriteLine("running oauth2_auth_token"); |
|
|
|
|
ITokenAccess credential = (await GoogleCredential.GetApplicationDefaultAsync()).CreateScoped(new[] { oauthScope }); |
|
|
|
|
string oauth2Token = await credential.GetAccessTokenForRequestAsync(); |
|
|
|
@ -415,10 +426,15 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
Assert.True(oauthScope.Contains(response.OauthScope)); |
|
|
|
|
Assert.AreEqual(GetEmailFromServiceAccountFile(), response.Username); |
|
|
|
|
Console.WriteLine("Passed!"); |
|
|
|
|
#else |
|
|
|
|
// TODO(jtattermusch): implement this |
|
|
|
|
throw new NotImplementedException("Not supported on CoreCLR yet"); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static async Task RunPerRpcCredsAsync(TestService.TestServiceClient client, string oauthScope) |
|
|
|
|
{ |
|
|
|
|
#if !NETSTANDARD1_5 |
|
|
|
|
Console.WriteLine("running per_rpc_creds"); |
|
|
|
|
ITokenAccess googleCredential = await GoogleCredential.GetApplicationDefaultAsync(); |
|
|
|
|
|
|
|
|
@ -432,6 +448,10 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
|
|
|
|
|
Assert.AreEqual(GetEmailFromServiceAccountFile(), response.Username); |
|
|
|
|
Console.WriteLine("Passed!"); |
|
|
|
|
#else |
|
|
|
|
// TODO(jtattermusch): implement this |
|
|
|
|
throw new NotImplementedException("Not supported on CoreCLR yet"); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static async Task RunCancelAfterBeginAsync(TestService.TestServiceClient client) |
|
|
|
@ -626,13 +646,17 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
// extracts the client_email field from service account file used for auth test cases |
|
|
|
|
private static string GetEmailFromServiceAccountFile() |
|
|
|
|
{ |
|
|
|
|
#if !NETSTANDARD1_5 |
|
|
|
|
string keyFile = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"); |
|
|
|
|
Assert.IsNotNull(keyFile); |
|
|
|
|
|
|
|
|
|
var jobject = JObject.Parse(File.ReadAllText(keyFile)); |
|
|
|
|
string email = jobject.GetValue("client_email").Value<string>(); |
|
|
|
|
Assert.IsTrue(email.Length > 0); // spec requires nonempty client email. |
|
|
|
|
return email; |
|
|
|
|
#else |
|
|
|
|
// TODO(jtattermusch): implement this |
|
|
|
|
throw new NotImplementedException("Not supported on CoreCLR yet"); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static Metadata CreateTestMetadata() |
|
|
|
|