This repository has been archived by the owner on Dec 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support setting ServiceOption for quota project (#92)
- Loading branch information
Showing
4 changed files
with
122 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -53,6 +53,10 @@ | |
import org.junit.rules.ExpectedException; | ||
|
||
public class ServiceOptionsTest { | ||
private static GoogleCredentials credentials; | ||
private static GoogleCredentials credentialsWithProjectId; | ||
private static GoogleCredentials credentialsWithQuotaProject; | ||
|
||
private static final String JSON_KEY = | ||
"{\n" | ||
+ " \"private_key_id\": \"somekeyid\",\n" | ||
|
@@ -80,16 +84,6 @@ public class ServiceOptionsTest { | |
+ " \"client_id\": \"someclientid.apps.googleusercontent.com\",\n" | ||
+ " \"type\": \"service_account\"\n" | ||
+ "}"; | ||
private static GoogleCredentials credentials; | ||
|
||
static { | ||
try { | ||
InputStream keyStream = new ByteArrayInputStream(JSON_KEY.getBytes()); | ||
credentials = GoogleCredentials.fromStream(keyStream); | ||
} catch (IOException e) { | ||
fail("Couldn't create fake JSON credentials."); | ||
} | ||
} | ||
|
||
private static final String JSON_KEY_PROJECT_ID = | ||
"{\n" | ||
|
@@ -119,15 +113,51 @@ public class ServiceOptionsTest { | |
+ " \"client_id\": \"someclientid.apps.googleusercontent.com\",\n" | ||
+ " \"type\": \"service_account\"\n" | ||
+ "}"; | ||
private static GoogleCredentials credentialsWithProjectId; | ||
|
||
private static final String JSON_KEY_QUOTA_PROJECT_ID = | ||
"{\n" | ||
+ " \"private_key_id\": \"somekeyid\",\n" | ||
+ " \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggS" | ||
+ "kAgEAAoIBAQC+K2hSuFpAdrJI\\nnCgcDz2M7t7bjdlsadsasad+fvRSW6TjNQZ3p5LLQY1kSZRqBqylRkzteMOyHg" | ||
+ "aR\\n0Pmxh3ILCND5men43j3h4eDbrhQBuxfEMalkG92sL+PNQSETY2tnvXryOvmBRwa/\\nQP/9dJfIkIDJ9Fw9N4" | ||
+ "Bhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\\nknddadwkwewcVxHFhcZJO+XWf6ofLUXpRwiTZakGMn8EE1uVa2" | ||
+ "LgczOjwWHGi99MFjxSer5m9\\n1tCa3/KEGKiS/YL71JvjwX3mb+cewlkcmweBKZHM2JPTk0ZednFSpVZMtycjkbLa" | ||
+ "\\ndYOS8V85AgMBewECggEBAKksaldajfDZDV6nGqbFjMiizAKJolr/M3OQw16K6o3/\\n0S31xIe3sSlgW0+UbYlF" | ||
+ "4U8KifhManD1apVSC3csafaspP4RZUHFhtBywLO9pR5c\\nr6S5aLp+gPWFyIp1pfXbWGvc5VY/v9x7ya1VEa6rXvL" | ||
+ "sKupSeWAW4tMj3eo/64ge\\nsdaceaLYw52KeBYiT6+vpsnYrEkAHO1fF/LavbLLOFJmFTMxmsNaG0tuiJHgjshB\\" | ||
+ "n82DpMCbXG9YcCgI/DbzuIjsdj2JC1cascSP//3PmefWysucBQe7Jryb6NQtASmnv\\nCdDw/0jmZTEjpe4S1lxfHp" | ||
+ "lAhHFtdgYTvyYtaLZiVVkCgYEA8eVpof2rceecw/I6\\n5ng1q3Hl2usdWV/4mZMvR0fOemacLLfocX6IYxT1zA1FF" | ||
+ "JlbXSRsJMf/Qq39mOR2\\nSpW+hr4jCoHeRVYLgsbggtrevGmILAlNoqCMpGZ6vDmJpq6ECV9olliDvpPgWOP+\\nm" | ||
+ "YPDreFBGxWvQrADNbRt2dmGsrsCgYEAyUHqB2wvJHFqdmeBsaacewzV8x9WgmeX\\ngUIi9REwXlGDW0Mz50dxpxcK" | ||
+ "CAYn65+7TCnY5O/jmL0VRxU1J2mSWyWTo1C+17L0\\n3fUqjxL1pkefwecxwecvC+gFFYdJ4CQ/MHHXU81Lwl1iWdF" | ||
+ "Cd2UoGddYaOF+KNeM\\nHC7cmqra+JsCgYEAlUNywzq8nUg7282E+uICfCB0LfwejuymR93CtsFgb7cRd6ak\\nECR" | ||
+ "8FGfCpH8ruWJINllbQfcHVCX47ndLZwqv3oVFKh6pAS/vVI4dpOepP8++7y1u\\ncoOvtreXCX6XqfrWDtKIvv0vjl" | ||
+ "HBhhhp6mCcRpdQjV38H7JsyJ7lih/oNjECgYAt\\nkndj5uNl5SiuVxHFhcZJO+XWf6ofLUregtevZakGMn8EE1uVa" | ||
+ "2AY7eafmoU/nZPT\\n00YB0TBATdCbn/nBSuKDESkhSg9s2GEKQZG5hBmL5uCMfo09z3SfxZIhJdlerreP\\nJ7gSi" | ||
+ "dI12N+EZxYd4xIJh/HFDgp7RRO87f+WJkofMQKBgGTnClK1VMaCRbJZPriw\\nEfeFCoOX75MxKwXs6xgrw4W//AYG" | ||
+ "GUjDt83lD6AZP6tws7gJ2IwY/qP7+lyhjEqN\\nHtfPZRGFkGZsdaksdlaksd323423d+15/UvrlRSFPNj1tWQmNKk" | ||
+ "XyRDW4IG1Oa2p\\nrALStNBx5Y9t0/LQnFI4w3aG\\n-----END PRIVATE KEY-----\\n\",\n" | ||
+ " \"project_id\": \"someprojectid\",\n" | ||
+ " \"client_email\": \"[email protected]\",\n" | ||
+ " \"client_id\": \"someclientid.apps.googleusercontent.com\",\n" | ||
+ " \"type\": \"service_account\",\n" | ||
+ " \"quota_project_id\": \"some-quota-project-id\"\n" | ||
+ "}"; | ||
|
||
static { | ||
credentials = loadCredentials(JSON_KEY); | ||
credentialsWithProjectId = loadCredentials(JSON_KEY_PROJECT_ID); | ||
credentialsWithQuotaProject = loadCredentials(JSON_KEY_QUOTA_PROJECT_ID); | ||
} | ||
|
||
static GoogleCredentials loadCredentials(String credentialFile) { | ||
try { | ||
InputStream keyStream = new ByteArrayInputStream(JSON_KEY_PROJECT_ID.getBytes()); | ||
credentialsWithProjectId = GoogleCredentials.fromStream(keyStream); | ||
InputStream keyStream = new ByteArrayInputStream(credentialFile.getBytes()); | ||
return GoogleCredentials.fromStream(keyStream); | ||
} catch (IOException e) { | ||
fail("Couldn't create fake JSON credentials."); | ||
} | ||
return null; | ||
} | ||
|
||
private static final ApiClock TEST_CLOCK = new TestClock(); | ||
|
@@ -138,6 +168,7 @@ public class ServiceOptionsTest { | |
.setHost("host") | ||
.setProjectId("project-id") | ||
.setRetrySettings(ServiceOptions.getNoRetrySettings()) | ||
.setQuotaProjectId("quota-project-id") | ||
.build(); | ||
private static final TestServiceOptions OPTIONS_NO_CREDENTIALS = | ||
TestServiceOptions.newBuilder() | ||
|
@@ -146,6 +177,7 @@ public class ServiceOptionsTest { | |
.setHost("host") | ||
.setProjectId("project-id") | ||
.setRetrySettings(ServiceOptions.getNoRetrySettings()) | ||
.setQuotaProjectId("quota-project-id") | ||
.build(); | ||
private static final TestServiceOptions DEFAULT_OPTIONS = | ||
TestServiceOptions.newBuilder().setProjectId("project-id").build(); | ||
|
@@ -283,6 +315,39 @@ public void testBuilder() { | |
assertSame(ServiceOptions.getDefaultRetrySettings(), DEFAULT_OPTIONS.getRetrySettings()); | ||
} | ||
|
||
@Test | ||
public void testBuilder_quotaProjectServiceOptionTakesPrecedence() { | ||
TestServiceOptions noCredsWithQuotaProject = | ||
TestServiceOptions.newBuilder() | ||
.setCredentials(NoCredentials.getInstance()) | ||
.setProjectId("project-id") | ||
.setQuotaProjectId("quota-project-id") | ||
.build(); | ||
TestServiceOptions quotaProjectCredsWithQuotaProject = | ||
TestServiceOptions.newBuilder() | ||
.setQuotaProjectId("quota-project-id") | ||
.setCredentials(credentialsWithQuotaProject) | ||
.build(); | ||
TestServiceOptions quotaProjectCredsWithQuotaProject2 = | ||
TestServiceOptions.newBuilder() | ||
.setCredentials(credentialsWithQuotaProject) | ||
.setQuotaProjectId("quota-project-id") | ||
.build(); | ||
TestServiceOptions quotaProjectCreds = | ||
TestServiceOptions.newBuilder().setCredentials(credentialsWithQuotaProject).build(); | ||
TestServiceOptions none = | ||
TestServiceOptions.newBuilder() | ||
.setCredentials(NoCredentials.getInstance()) | ||
.setProjectId("project-id") | ||
.build(); | ||
|
||
assertEquals("quota-project-id", noCredsWithQuotaProject.getQuotaProjectId()); | ||
assertEquals("quota-project-id", quotaProjectCredsWithQuotaProject.getQuotaProjectId()); | ||
assertEquals("quota-project-id", quotaProjectCredsWithQuotaProject2.getQuotaProjectId()); | ||
assertEquals("some-quota-project-id", quotaProjectCreds.getQuotaProjectId()); | ||
assertEquals(null, none.getQuotaProjectId()); | ||
} | ||
|
||
@Test | ||
public void testBuilderNoCredentials() { | ||
assertEquals(NoCredentials.getInstance(), OPTIONS_NO_CREDENTIALS.getCredentials()); | ||
|
@@ -293,6 +358,7 @@ public void testBuilderNoCredentials() { | |
assertEquals("host", OPTIONS_NO_CREDENTIALS.getHost()); | ||
assertEquals("project-id", OPTIONS_NO_CREDENTIALS.getProjectId()); | ||
assertSame(ServiceOptions.getNoRetrySettings(), OPTIONS_NO_CREDENTIALS.getRetrySettings()); | ||
assertEquals("quota-project-id", OPTIONS.getQuotaProjectId()); | ||
} | ||
|
||
@Test | ||
|
@@ -372,7 +438,8 @@ public void testGetServiceAccountProjectId() throws Exception { | |
Files.write("{\"project_id\":\"my-project-id\"}".getBytes(), credentialsFile); | ||
|
||
assertEquals( | ||
"my-project-id", ServiceOptions.getServiceAccountProjectId(credentialsFile.getPath())); | ||
"my-project-id", | ||
ServiceOptions.getValueFromCredentialsFile(credentialsFile.getPath(), "project_id")); | ||
} | ||
|
||
@Test | ||
|
@@ -381,14 +448,14 @@ public void testGetServiceAccountProjectId_badJson() throws Exception { | |
credentialsFile.deleteOnExit(); | ||
Files.write("asdfghj".getBytes(), credentialsFile); | ||
|
||
assertNull(ServiceOptions.getServiceAccountProjectId(credentialsFile.getPath())); | ||
assertNull(ServiceOptions.getValueFromCredentialsFile(credentialsFile.getPath(), "project_id")); | ||
} | ||
|
||
@Test | ||
public void testGetServiceAccountProjectId_nonExistentFile() throws Exception { | ||
File credentialsFile = new File("/doesnotexist"); | ||
|
||
assertNull(ServiceOptions.getServiceAccountProjectId(credentialsFile.getPath())); | ||
assertNull(ServiceOptions.getValueFromCredentialsFile(credentialsFile.getPath(), "project_id")); | ||
} | ||
|
||
@Test | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters