@@ -18,6 +18,9 @@ package com.google.firebase.appdistribution.gradle
1818
1919import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
2020import com.google.api.client.http.HttpTransport
21+ import com.google.auth.http.HttpCredentialsAdapter
22+ import com.google.auth.oauth2.ExternalAccountCredentials
23+ import com.google.auth.oauth2.ServiceAccountCredentials as GoogleServiceAccountCredentials
2124import junit.framework.TestCase.assertEquals
2225import junit.framework.TestCase.assertNull
2326import kotlin.test.assertContains
@@ -48,13 +51,24 @@ class CredentialsRetrieverTest {
4851 fun testGetAuthCredential_usesServiceCredentialsJsonPassedIn () {
4952 val credentialsRetriever = CredentialsRetriever ()
5053
51- val credential = getAuthCredential(credentialsRetriever, TEST_SERVICE_CREDENTIALS_PATH )
54+ val credential = credentialsRetriever.getAuthCredential(TEST_SERVICE_CREDENTIALS_PATH ) as HttpCredentialsAdapter
55+ val googleCreds = credential.credentials as GoogleServiceAccountCredentials
5256
5357 assertEquals(
5458 " firebase-adminsdk@my-project.iam.gserviceaccount.com" ,
55- credential.serviceAccountId
59+ googleCreds.clientEmail
5660 )
57- assertEquals(" abcefg123456789" , credential.serviceAccountPrivateKeyId)
61+ assertEquals(" abcefg123456789" , googleCreds.privateKeyId)
62+ }
63+
64+ @Test
65+ fun testGetAuthCredential_usesWifCredentialsJsonPassedIn () {
66+ val credentialsRetriever = CredentialsRetriever ()
67+
68+ val credential = credentialsRetriever.getAuthCredential(TEST_WIF_CREDENTIALS_PATH ) as HttpCredentialsAdapter
69+ val googleCreds = credential.credentials
70+
71+ assert (googleCreds is ExternalAccountCredentials )
5872 }
5973
6074 @Test
@@ -65,7 +79,7 @@ class CredentialsRetrieverTest {
6579 environmentVariables[AppDistributionEnvironment .ENV_FIREBASE_TOKEN ] = expectedRefreshToken
6680 val credentialsRetriever = CredentialsRetriever (transport)
6781
68- val credential = getAuthCredential(credentialsRetriever)
82+ val credential = credentialsRetriever. getAuthCredential() as GoogleCredential
6983
7084 assertEquals(" some-access-token" , credential.accessToken)
7185 }
@@ -77,7 +91,7 @@ class CredentialsRetrieverTest {
7791 environmentVariables[" XDG_CONFIG_HOME" ] = " src/test/fixtures"
7892 val credentialsRetriever = CredentialsRetriever (transport)
7993
80- val credential = getAuthCredential(credentialsRetriever)
94+ val credential = credentialsRetriever. getAuthCredential() as GoogleCredential
8195
8296 assertContains(" some-access-token" , credential.accessToken)
8397 }
@@ -93,13 +107,14 @@ class CredentialsRetrieverTest {
93107 TEST_SERVICE_CREDENTIALS_PATH
94108 val credentialsRetriever = CredentialsRetriever (testEnvironment)
95109
96- val credential = getAuthCredential(credentialsRetriever)
110+ val credential = credentialsRetriever.getAuthCredential() as HttpCredentialsAdapter
111+ val googleCreds = credential.credentials as GoogleServiceAccountCredentials
97112
98113 assertEquals(
99114 " firebase-adminsdk@my-project.iam.gserviceaccount.com" ,
100- credential.serviceAccountId
115+ googleCreds.clientEmail
101116 )
102- assertEquals(" abcefg123456789" , credential.serviceAccountPrivateKeyId )
117+ assertEquals(" abcefg123456789" , googleCreds.privateKeyId )
103118 }
104119
105120 @Test
@@ -120,17 +135,18 @@ class CredentialsRetrieverTest {
120135 val credentialsRetriever = CredentialsRetriever (transport)
121136
122137 // Also pass in service credentials json directly
123- val credential = getAuthCredential(credentialsRetriever, TEST_SERVICE_CREDENTIALS_PATH )
138+ val credential = credentialsRetriever.getAuthCredential(TEST_SERVICE_CREDENTIALS_PATH ) as HttpCredentialsAdapter
139+ val googleCreds = credential.credentials as GoogleServiceAccountCredentials
124140
125141 // Verify service credentials auth is configured
126142 assertEquals(
127143 " firebase-adminsdk@my-project.iam.gserviceaccount.com" ,
128- credential.serviceAccountId
144+ googleCreds.clientEmail
129145 )
130- assertEquals(" abcefg123456789" , credential.serviceAccountPrivateKeyId )
146+ assertEquals(" abcefg123456789" , googleCreds.privateKeyId )
131147
132148 // Verify the firebase refresh token was not used
133- assertNull(credential .accessToken)
149+ assertNull(googleCreds .accessToken)
134150 }
135151
136152 @Test
@@ -147,7 +163,7 @@ class CredentialsRetrieverTest {
147163 )
148164 val credentialsRetriever = CredentialsRetriever (transport)
149165
150- val credential = getAuthCredential(credentialsRetriever)
166+ val credential = credentialsRetriever. getAuthCredential() as GoogleCredential
151167
152168 // Verify access token is the one set as the env firebase token
153169 assertEquals(" access-token-for-env-firebase-token" , credential.accessToken)
@@ -164,20 +180,17 @@ class CredentialsRetrieverTest {
164180 environmentVariables[AppDistributionEnvironment .ENV_GOOGLE_APPLICATION_CREDENTIALS ] =
165181 TEST_SERVICE_CREDENTIALS_PATH
166182
167- val credential = getAuthCredential(credentialsRetriever)
183+ val credential = credentialsRetriever. getAuthCredential() as GoogleCredential
168184
169185 // Verify Firebase CLI token is used, which also verifies that default credentials aren't used
170186 // since it's not of type ServiceAccountCredentials
171187 assertEquals(" some-access-token" , credential.accessToken)
172188 }
173189
174- private fun getAuthCredential (
175- credentialsRetriever : CredentialsRetriever ,
176- serviceCredentialsPath : String? = null
177- ) = credentialsRetriever.getAuthCredential(serviceCredentialsPath) as GoogleCredential
178-
179190 companion object {
180191 private val TEST_SERVICE_CREDENTIALS_PATH =
181192 FixtureUtils .getFixtureAsFile(" test-service-credentials.json" ).absolutePath
193+ private val TEST_WIF_CREDENTIALS_PATH =
194+ FixtureUtils .getFixtureAsFile(" test-wif-credentials.json" ).absolutePath
182195 }
183196}
0 commit comments