Exclude emails using app auth with GithubOrgReaderProcessor

Co-authored-by: Ben Lambert <ben@blam.sh>
Signed-off-by: Johan Haals <johan.haals@gmail.com>
This commit is contained in:
Johan Haals
2021-05-21 14:21:58 +02:00
parent f2cb8c8b61
commit 0fd4ea4431
8 changed files with 167 additions and 127 deletions
@@ -81,13 +81,13 @@ describe('GithubCredentialsProvider tests', () => {
},
} as RestEndpointMethodTypes['apps']['createInstallationAccessToken']['response']);
const { token, headers } = await github.getCredentials({
const { token, headers, type } = await github.getCredentials({
url: 'https://github.com/backstage/foobar',
});
const { token: accessToken2 } = await github.getCredentials({
url: 'https://github.com/backstage/foobar',
});
expect(type).toEqual('app');
expect(token).toEqual('secret_token');
expect(token).toEqual(accessToken2);
expect(headers).toEqual({ Authorization: 'Bearer secret_token' });
@@ -102,6 +102,7 @@ describe('GithubCredentialsProvider tests', () => {
Authorization: 'Bearer hardcoded_token',
},
token: 'hardcoded_token',
type: 'token',
});
});
@@ -260,6 +261,6 @@ describe('GithubCredentialsProvider tests', () => {
githubProvider.getCredentials({
url: 'https://github.com/backstage',
}),
).resolves.toEqual({ headers: undefined, token: undefined });
).resolves.toEqual({ headers: undefined, token: undefined, type: 'token' });
});
});
@@ -192,9 +192,12 @@ export class GithubAppCredentialsMux {
}
}
export type GithubCredentialType = 'app' | 'token';
export type GithubCredentials = {
headers?: { [name: string]: string };
token?: string;
type: GithubCredentialType;
};
// TODO: Possibly move this to a backend only package so that it's not used in the frontend by mistake
@@ -226,8 +229,10 @@ export class GithubCredentialsProvider {
const owner = parsed.owner || parsed.name;
const repo = parsed.owner ? parsed.name : undefined;
let type: 'app' | 'token' = 'app';
let token = await this.githubAppCredentialsMux.getAppToken(owner, repo);
if (!token) {
type = 'token';
token = this.token;
}
@@ -238,6 +243,7 @@ export class GithubCredentialsProvider {
}
: undefined,
token,
type,
};
}
}
+1
View File
@@ -21,4 +21,5 @@ export {
export type { GitHubIntegrationConfig } from './config';
export { getGitHubFileFetchUrl, getGitHubRequestOptions } from './core';
export { GithubCredentialsProvider } from './GithubCredentialsProvider';
export type { GithubCredentialType } from './GithubCredentialsProvider';
export { GitHubIntegration } from './GitHubIntegration';