return error where identity api throws

Signed-off-by: Brian Fletcher <brian@roadie.io>
This commit is contained in:
Brian Fletcher
2022-08-25 09:18:16 +01:00
parent 2b3b361709
commit f05f8d7e7d
2 changed files with 10 additions and 67 deletions
@@ -886,11 +886,8 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
},
);
});
it('should not throw', async () => {
const broker =
taskBroker.dispatch as jest.Mocked<TaskBroker>['dispatch'];
await request(app)
it('return an error', async () => {
const response = await request(app)
.post('/v2/tasks')
.send({
templateRef: stringifyEntityRef({
@@ -901,42 +898,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
required: 'required-value',
},
});
expect(broker).toHaveBeenCalledWith(
expect.objectContaining({
createdBy: undefined,
secrets: {
backstageToken: undefined,
},
spec: {
apiVersion: mockTemplate.apiVersion,
steps: mockTemplate.spec.steps.map((step, index) => ({
...step,
id: step.id ?? `step-${index + 1}`,
name: step.name ?? step.action,
})),
output: mockTemplate.spec.output ?? {},
parameters: {
required: 'required-value',
},
user: {
entity: undefined,
ref: undefined,
},
templateInfo: {
entityRef: stringifyEntityRef({
kind: 'Template',
namespace: 'Default',
name: mockTemplate.metadata?.name,
}),
baseUrl: 'https://dev.azure.com',
entity: {
metadata: mockTemplate.metadata,
},
},
},
}),
);
expect(response.status).not.toEqual(201);
});
});
@@ -131,24 +131,6 @@ function buildDefaultIdentityClient({
};
}
const getIdentity = async ({
request,
identity,
logger,
}: {
request: express.Request;
identity: IdentityApi;
logger: Logger;
}) => {
let callerIdentity = undefined;
try {
callerIdentity = await identity.getIdentity({ request });
} catch (e: any) {
logger.debug(`identity could not be determined: ${e.message}`);
}
return callerIdentity;
};
/**
* A method to create a router for the scaffolder backend plugin.
* @public
@@ -228,10 +210,8 @@ export async function createRouter(
async (req, res) => {
const { namespace, kind, name } = req.params;
const userIdentity = await getIdentity({
const userIdentity = await identity.getIdentity({
request: req,
logger,
identity,
});
const token = userIdentity?.token;
@@ -276,10 +256,8 @@ export async function createRouter(
defaultKind: 'template',
});
const callerIdentity = await getIdentity({
const callerIdentity = await identity.getIdentity({
request: req,
logger,
identity,
});
const token = callerIdentity?.token;
const userEntityRef = callerIdentity?.identity.userEntityRef;
@@ -485,8 +463,11 @@ export async function createRouter(
throw new InputError('Input template is not a template');
}
const token = (await getIdentity({ request: req, logger, identity }))
?.token;
const token = (
await identity.getIdentity({
request: req,
})
)?.token;
for (const parameters of [template.spec.parameters ?? []].flat()) {
const result = validate(body.values, parameters);