diff --git a/src/model/cnaorg.js b/src/model/cnaorg.js index 45f2e0233..73f24ad41 100644 --- a/src/model/cnaorg.js +++ b/src/model/cnaorg.js @@ -12,7 +12,6 @@ ajv.addSchema(BaseOrgSchema) const validate = ajv.compile(CnaOrgSchema) const schema = { - authority: [String], oversees: [String], hard_quota: Number, soft_quota: Number, diff --git a/src/model/rootorg.js b/src/model/rootorg.js index 8a798c8e3..1517ec65c 100644 --- a/src/model/rootorg.js +++ b/src/model/rootorg.js @@ -12,7 +12,6 @@ ajv.addSchema(BaseOrgSchema) const validate = ajv.compile(RootOrgSchema) const schema = { - authority: [String], oversees: [String] } diff --git a/src/model/secretariatorg.js b/src/model/secretariatorg.js index 073f1c9d7..72008648d 100644 --- a/src/model/secretariatorg.js +++ b/src/model/secretariatorg.js @@ -12,7 +12,6 @@ ajv.addSchema(BaseOrgSchema) const validate = ajv.compile(SecretariatOrgSchema) const schema = { - authority: [String], oversees: [String], hard_quota: Number, soft_quota: Number diff --git a/test/integration-tests/registry-org/registryOrgDiscriminatorAuthorityTest.js b/test/integration-tests/registry-org/registryOrgDiscriminatorAuthorityTest.js new file mode 100644 index 000000000..f92d0f417 --- /dev/null +++ b/test/integration-tests/registry-org/registryOrgDiscriminatorAuthorityTest.js @@ -0,0 +1,115 @@ +/* eslint-disable no-unused-expressions */ +const chai = require('chai') +const expect = chai.expect +chai.use(require('chai-http')) + +const constants = require('../constants.js') +const app = require('../../../src/index.js') + +const secretariatHeaders = { ...constants.headers, 'content-type': 'application/json' } + +describe('Testing Registry Org Discriminator Authority inheritance', () => { + const orgsToCleanup = [] + + afterEach(async () => { + while (orgsToCleanup.length > 0) { + const shortName = orgsToCleanup.pop() + try { + await chai.request(app) + .delete(`/api/registryOrg/${shortName}`) + .set(secretariatHeaders) + } catch (err) { + // ignore errors during cleanup + } + } + }) + + it('successfully creates a CNA organization and returns the correct authority', async () => { + const cnaOrgData = { + short_name: 'test_cna_discriminator', + long_name: 'Test CNA Discriminator', + authority: ['CNA'], + hard_quota: 1000 + } + orgsToCleanup.push(cnaOrgData.short_name) + + const res = await chai.request(app) + .post('/api/registry/org') + .set(secretariatHeaders) + .send(cnaOrgData) + + if (res.status !== 200) { + console.log('CNA POST error res body:', JSON.stringify(res.body, null, 2)) + } + expect(res).to.have.status(200) + expect(res.body.created).to.haveOwnProperty('authority') + expect(res.body.created.authority).to.deep.equal(['CNA']) + + // Query it back to ensure authority was persisted + const getRes = await chai.request(app) + .get(`/api/registry/org/${cnaOrgData.short_name}`) + .set(secretariatHeaders) + + expect(getRes).to.have.status(200) + expect(getRes.body).to.haveOwnProperty('authority') + expect(getRes.body.authority).to.deep.equal(['CNA']) + }) + + it('successfully creates a Secretariat organization and returns the correct authority', async () => { + const secretariatOrgData = { + short_name: 'test_sec_discriminator', + long_name: 'Test Secretariat Discriminator', + authority: ['SECRETARIAT'], + hard_quota: 0 + } + orgsToCleanup.push(secretariatOrgData.short_name) + + const res = await chai.request(app) + .post('/api/registry/org') + .set(secretariatHeaders) + .send(secretariatOrgData) + + if (res.status !== 200) { + console.log('Secretariat POST error res body:', JSON.stringify(res.body, null, 2)) + } + expect(res).to.have.status(200) + expect(res.body.created).to.haveOwnProperty('authority') + expect(res.body.created.authority).to.deep.equal(['SECRETARIAT']) + + // Query it back to ensure authority was persisted + const getRes = await chai.request(app) + .get(`/api/registry/org/${secretariatOrgData.short_name}`) + .set(secretariatHeaders) + + expect(getRes).to.have.status(200) + expect(getRes.body).to.haveOwnProperty('authority') + expect(getRes.body.authority).to.deep.equal(['SECRETARIAT']) + }) + + it('successfully creates a Root organization and returns the correct authority', async () => { + const rootOrgData = { + short_name: 'test_root_discriminator', + long_name: 'Test Root Discriminator', + authority: ['ROOT'] + } + orgsToCleanup.push(rootOrgData.short_name) + + const res = await chai.request(app) + .post('/api/registry/org') + .set(secretariatHeaders) + .send(rootOrgData) + + expect(res).to.have.status(200) + expect(res.body.created).to.haveOwnProperty('authority') + expect(res.body.created.authority).to.deep.equal(['ROOT']) + + // Query it back to ensure authority was persisted + const getRes = await chai.request(app) + .get(`/api/registry/org/${rootOrgData.short_name}`) + .set(secretariatHeaders) + + expect(getRes).to.have.status(200) + expect(getRes.body).to.haveOwnProperty('authority') + expect(getRes.body.authority).to.deep.equal(['ROOT']) + }) +})