Merge pull request #5040 from erikxiv/fix/badge-auth

fix: support auth in badge plugin
This commit is contained in:
Patrik Oldsberg
2021-04-06 20:39:22 +02:00
committed by GitHub
5 changed files with 57 additions and 17 deletions
@@ -114,11 +114,14 @@ describe('createRouter', () => {
expect(response.text).toEqual(JSON.stringify([badge], null, 2));
expect(catalog.getEntityByName).toHaveBeenCalledTimes(1);
expect(catalog.getEntityByName).toHaveBeenCalledWith({
namespace: 'default',
kind: 'service',
name: 'test',
});
expect(catalog.getEntityByName).toHaveBeenCalledWith(
{
namespace: 'default',
kind: 'service',
name: 'test',
},
{ token: undefined },
);
expect(badgeBuilder.getBadges).toHaveBeenCalledTimes(1);
expect(badgeBuilder.createBadgeJson).toHaveBeenCalledTimes(1);
@@ -150,11 +153,14 @@ describe('createRouter', () => {
expect(response.body).toEqual(Buffer.from(image));
expect(catalog.getEntityByName).toHaveBeenCalledTimes(1);
expect(catalog.getEntityByName).toHaveBeenCalledWith({
namespace: 'default',
kind: 'service',
name: 'test',
});
expect(catalog.getEntityByName).toHaveBeenCalledWith(
{
namespace: 'default',
kind: 'service',
name: 'test',
},
{ token: undefined },
);
expect(badgeBuilder.getBadges).toHaveBeenCalledTimes(0);
expect(badgeBuilder.createBadgeSvg).toHaveBeenCalledTimes(1);
+16 -2
View File
@@ -46,7 +46,12 @@ export async function createRouter(
router.get('/entity/:namespace/:kind/:name/badge-specs', async (req, res) => {
const { namespace, kind, name } = req.params;
const entity = await catalog.getEntityByName({ namespace, kind, name });
const entity = await catalog.getEntityByName(
{ namespace, kind, name },
{
token: getBearerToken(req.headers.authorization),
},
);
if (!entity) {
throw new NotFoundError(
`No ${kind} entity in ${namespace} named "${name}"`,
@@ -79,7 +84,12 @@ export async function createRouter(
'/entity/:namespace/:kind/:name/badge/:badgeId',
async (req, res) => {
const { namespace, kind, name, badgeId } = req.params;
const entity = await catalog.getEntityByName({ namespace, kind, name });
const entity = await catalog.getEntityByName(
{ namespace, kind, name },
{
token: getBearerToken(req.headers.authorization),
},
);
if (!entity) {
throw new NotFoundError(
`No ${kind} entity in ${namespace} named "${name}"`,
@@ -132,3 +142,7 @@ async function getBadgeUrl(
const baseUrl = await options.discovery.getExternalBaseUrl('badges');
return `${baseUrl}/entity/${namespace}/${kind}/${name}/badge/${badgeId}`;
}
function getBearerToken(header?: string): string | undefined {
return header?.match(/Bearer\s+(\S+)/i)?.[1];
}