adds a User-Agent header to existing API requests in this package to clearly identify API requests from this Google Cloud Storage

Signed-off-by: armandocomellas1 <cgarmando@google.com>
This commit is contained in:
armandocomellas1
2024-02-08 13:33:14 -06:00
parent 94fe336f98
commit ece5a8f15a
3 changed files with 25 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/backend-common': minor
---
adds a User-Agent header to existing API requests in this package to clearly identify API requests from this Google Cloud Storage. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GCs package and `libName` represent the current Google API used at backstage.
@@ -20,6 +20,7 @@ import { getVoidLogger } from '../logging';
import { DefaultReadTreeResponseFactory } from './tree';
import { GoogleGcsUrlReader } from './GoogleGcsUrlReader';
import { UrlReaderPredicateTuple } from './types';
import packageinfo from '../../package.json';
const bucketGetFilesMock = jest.fn();
jest.mock('@google-cloud/storage', () => {
@@ -77,6 +78,20 @@ describe('GcsUrlReader', () => {
});
expect(entries).toHaveLength(1);
});
it('check if userAgent has been called with this key value', async () => {
const getStorage: any = {
userAgent: `backstage/kubernetes-backend.GkeClusterLocator/${packageinfo.version}`,
};
jest.mock('@google-cloud/storage', () => {
return {
Storage: jest.fn(() => getStorage),
};
});
const getUserAgent = getStorage.userAgent.toString();
expect(getUserAgent).toBe(
`backstage/kubernetes-backend.GkeClusterLocator/${packageinfo.version}`,
);
});
describe('predicates', () => {
const readers = createReader({
@@ -30,6 +30,7 @@ import {
} from '@backstage/integration';
import { Readable } from 'stream';
import { ReadUrlResponseFactory } from './ReadUrlResponseFactory';
import packageinfo from '../../package.json';
const GOOGLE_GCS_HOST = 'storage.cloud.google.com';
@@ -68,13 +69,16 @@ export class GoogleGcsUrlReader implements UrlReader {
logger.info(
'googleGcs credentials not found in config. Using default credentials provider.',
);
storage = new Storage();
storage = new Storage({
userAgent: `backstage/kubernetes-backend.GkeClusterLocator/${packageinfo.version}`,
});
} else {
storage = new Storage({
credentials: {
client_email: gcsConfig.clientEmail || undefined,
private_key: gcsConfig.privateKey || undefined,
},
userAgent: `backstage/kubernetes-backend.GkeClusterLocator/${packageinfo.version}`,
});
}
const reader = new GoogleGcsUrlReader(gcsConfig, storage);