catalog: add support for relative targets and implicit types in Location entities

This commit is contained in:
Fredrik Adelöw
2020-12-01 15:29:03 +01:00
parent 8d6156d69c
commit 08835a61d9
10 changed files with 167 additions and 40 deletions
@@ -4,6 +4,5 @@ metadata:
name: acme-corp
description: A collection of all Backstage example Groups
spec:
type: github
targets:
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/org.yaml
- ./acme/org.yaml
@@ -16,12 +16,11 @@ metadata:
name: example-groups
description: A collection of all Backstage example Groups
spec:
type: github
targets:
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/infrastructure-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/boxoffice-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/backstage-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/team-a-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/team-b-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/team-c-group.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme/team-d-group.yaml
- ./infrastructure-group.yaml
- ./boxoffice-group.yaml
- ./backstage-group.yaml
- ./team-a-group.yaml
- ./team-b-group.yaml
- ./team-c-group.yaml
- ./team-d-group.yaml
@@ -4,10 +4,9 @@ metadata:
name: example-apis
description: A collection of all Backstage example APIs
spec:
type: github
targets:
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/apis/hello-world-api.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/apis/petstore-api.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/apis/spotify-api.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/apis/streetlights-api.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/apis/swapi-graphql.yaml
- ./apis/hello-world-api.yaml
- ./apis/petstore-api.yaml
- ./apis/spotify-api.yaml
- ./apis/streetlights-api.yaml
- ./apis/swapi-graphql.yaml
@@ -4,14 +4,13 @@ metadata:
name: example-components
description: A collection of all Backstage example components
spec:
type: github
targets:
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/artist-lookup-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/petstore-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/playback-order-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/podcast-api-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/queue-proxy-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/searcher-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/playback-lib-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/www-artist-component.yaml
- https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/shuffle-api-component.yaml
- ./components/artist-lookup-component.yaml
- ./components/petstore-component.yaml
- ./components/playback-order-component.yaml
- ./components/podcast-api-component.yaml
- ./components/queue-proxy-component.yaml
- ./components/searcher-component.yaml
- ./components/playback-lib-component.yaml
- ./components/www-artist-component.yaml
- ./components/shuffle-api-component.yaml
@@ -54,9 +54,9 @@ describe('LocationV1alpha1Validator', () => {
await expect(validator.check(entity)).resolves.toBe(false);
});
it('rejects missing type', async () => {
it('accepts missing type', async () => {
delete (entity as any).spec.type;
await expect(validator.check(entity)).rejects.toThrow(/type/);
await expect(validator.check(entity)).resolves.toBe(true);
});
it('rejects wrong type', async () => {
@@ -26,7 +26,7 @@ const schema = yup.object<Partial<LocationEntityV1alpha1>>({
kind: yup.string().required().equals([KIND]),
spec: yup
.object({
type: yup.string().required().min(1),
type: yup.string().notRequired().min(1),
target: yup.string().notRequired().min(1),
targets: yup.array(yup.string().required()).notRequired(),
})
@@ -37,7 +37,7 @@ export interface LocationEntityV1alpha1 extends Entity {
apiVersion: typeof API_VERSION[number];
kind: typeof KIND;
spec: {
type: string;
type?: string;
target?: string;
targets?: string[];
};