Skip to content

Commit 3b8d5a3

Browse files
committed
fix tests
1 parent dcda638 commit 3b8d5a3

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

src/utils/crypto-signer.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,14 @@ export class IAMSigner implements CryptoSigner {
108108
private serviceAccountId?: string;
109109
private app?: App;
110110

111-
constructor(httpClient: AuthorizedHttpClient, app: App) {
111+
constructor(httpClient: AuthorizedHttpClient, app?: App) {
112112
if (!httpClient) {
113113
throw new CryptoSignerError({
114114
code: CryptoSignerErrorCode.INVALID_ARGUMENT,
115115
message: 'INTERNAL ASSERT: Must provide a HTTP client to initialize IAMSigner.',
116116
});
117117
}
118-
if (typeof app !== 'object' || app === null || !('options' in app)) {
118+
if (app && (typeof app !== 'object' || app === null || !('options' in app))) {
119119
throw new CryptoSignerError({
120120
code: CryptoSignerErrorCode.INVALID_ARGUMENT,
121121
message: 'INTERNAL ASSERT: Must provide a valid Firebase app instance.',
@@ -156,12 +156,14 @@ export class IAMSigner implements CryptoSigner {
156156
*/
157157
public async getAccountId(): Promise<string> {
158158
if (validator.isNonEmptyString(this.serviceAccountId)) {
159-
return Promise.resolve(this.serviceAccountId);
159+
return this.serviceAccountId;
160160
}
161-
const accountId = await utils.findServiceAccountEmail(this.app!)
162-
if (accountId) {
163-
this.serviceAccountId = accountId;
164-
return Promise.resolve(accountId);
161+
if (this.app) {
162+
const accountId = await utils.findServiceAccountEmail(this.app!)
163+
if (accountId) {
164+
this.serviceAccountId = accountId;
165+
return accountId;
166+
}
165167
}
166168
const request: HttpRequestConfig = {
167169
method: 'GET',

test/unit/utils/crypto-signer.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ describe('CryptoSigner', () => {
103103
const input = Buffer.from('input');
104104
const signRequest = {
105105
method: 'POST',
106-
url: 'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/test-service-account:signBlob',
106+
url: 'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/foo@project_id.iam.gserviceaccount.com:signBlob',
107107
headers: {
108108
Authorization: `Bearer ${mockAccessToken}`,
109109
'X-Goog-Api-Client': getMetricsHeader()
@@ -120,7 +120,7 @@ describe('CryptoSigner', () => {
120120
const expectedResult = utils.responseFrom(response);
121121
stub = sinon.stub(HttpClient.prototype, 'send').resolves(expectedResult);
122122
const requestHandler = new AuthorizedHttpClient(mockApp);
123-
const signer = new IAMSigner(requestHandler, 'test-service-account');
123+
const signer = new IAMSigner(requestHandler, mockApp);
124124
return signer.sign(input).then((signature) => {
125125
expect(signature.toString('base64')).to.equal(response.signedBlob);
126126
expect(stub).to.have.been.calledOnce.and.calledWith(signRequest);
@@ -136,7 +136,7 @@ describe('CryptoSigner', () => {
136136
});
137137
stub = sinon.stub(HttpClient.prototype, 'send').rejects(expectedResult);
138138
const requestHandler = new AuthorizedHttpClient(mockApp);
139-
const signer = new IAMSigner(requestHandler, 'test-service-account');
139+
const signer = new IAMSigner(requestHandler, mockApp);
140140
return signer.sign(input).catch((err) => {
141141
expect(err).to.be.instanceOf(CryptoSignerError);
142142
expect(err.message).to.equal('Server responded with status 500.');
@@ -145,9 +145,9 @@ describe('CryptoSigner', () => {
145145
});
146146
});
147147

148-
it('should return the explicitly specified service account', () => {
149-
const signer = new IAMSigner(new AuthorizedHttpClient(mockApp), 'test-service-account');
150-
return signer.getAccountId().should.eventually.equal('test-service-account');
148+
it('should return the service account from the app', () => {
149+
const signer = new IAMSigner(new AuthorizedHttpClient(mockApp), mockApp);
150+
return signer.getAccountId().should.eventually.equal('foo@project_id.iam.gserviceaccount.com');
151151
});
152152
});
153153

0 commit comments

Comments
 (0)