|
|
|
@ -5,13 +5,7 @@ const { |
|
|
|
createModel, |
|
|
|
supertest, |
|
|
|
defaultHeaders, |
|
|
|
testPermissionsForEndpoint, |
|
|
|
shouldReturn403WhenNoPermission, |
|
|
|
shouldReturn200WithOnlyOnePermission, |
|
|
|
} = require("./couchTestUtils"); |
|
|
|
const { |
|
|
|
WRITE_MODEL, READ_MODEL |
|
|
|
} = require("../../../utilities/accessLevels") |
|
|
|
|
|
|
|
describe("/records", () => { |
|
|
|
let request |
|
|
|
@ -41,15 +35,15 @@ describe("/records", () => { |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const createRecord = async r => |
|
|
|
await request |
|
|
|
.post(`/api/${instance._id}/${model._id}/records`) |
|
|
|
.send(r || record) |
|
|
|
.set(defaultHeaders) |
|
|
|
.expect('Content-Type', /json/) |
|
|
|
.expect(200) |
|
|
|
describe("save, load, update, delete", () => { |
|
|
|
|
|
|
|
describe("save", () => { |
|
|
|
const createRecord = async r => |
|
|
|
await request |
|
|
|
.post(`/api/${instance._id}/${model._id}/records`) |
|
|
|
.send(r || record) |
|
|
|
.set(defaultHeaders) |
|
|
|
.expect('Content-Type', /json/) |
|
|
|
.expect(200) |
|
|
|
|
|
|
|
it("returns a success message when the record is created", async () => { |
|
|
|
const res = await createRecord() |
|
|
|
@ -58,18 +52,6 @@ describe("/records", () => { |
|
|
|
expect(res.body._rev).toBeDefined() |
|
|
|
}) |
|
|
|
|
|
|
|
it("should apply authorization to endpoint", async () => { |
|
|
|
await testPermissionsForEndpoint({ |
|
|
|
request, |
|
|
|
method: "POST", |
|
|
|
url: `/api/${instance._id}/${model._id}/records`, |
|
|
|
body: record, |
|
|
|
instanceId: instance._id, |
|
|
|
permissionName: WRITE_MODEL, |
|
|
|
itemId: model._id, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
it("updates a record successfully", async () => { |
|
|
|
const rec = await createRecord() |
|
|
|
const existing = rec.body |
|
|
|
@ -89,9 +71,7 @@ describe("/records", () => { |
|
|
|
expect(res.res.statusMessage).toEqual(`${model.name} updated successfully.`) |
|
|
|
expect(res.body.name).toEqual("Updated Name") |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
describe("find", () => { |
|
|
|
it("should load a record", async () => { |
|
|
|
const rec = await createRecord() |
|
|
|
const existing = rec.body |
|
|
|
@ -110,31 +90,6 @@ describe("/records", () => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
it("load should return 404 when record does not exist", async () => { |
|
|
|
await createRecord() |
|
|
|
await request |
|
|
|
.get(`/api/${instance._id}/${model._id}/records/not-a-valid-id`) |
|
|
|
.set(defaultHeaders) |
|
|
|
.expect('Content-Type', /json/) |
|
|
|
.expect(404) |
|
|
|
}) |
|
|
|
|
|
|
|
it("should apply authorization to endpoint", async () => { |
|
|
|
const rec = await createRecord() |
|
|
|
await testPermissionsForEndpoint({ |
|
|
|
request, |
|
|
|
method: "GET", |
|
|
|
url: `/api/${instance._id}/${model._id}/records/${rec.body._id}`, |
|
|
|
instanceId: instance._id, |
|
|
|
permissionName: READ_MODEL, |
|
|
|
itemId: model._id, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
describe("fetch", () => { |
|
|
|
|
|
|
|
it("should list all records for given modelId", async () => { |
|
|
|
const newRecord = { |
|
|
|
modelId: model._id, |
|
|
|
@ -155,47 +110,14 @@ describe("/records", () => { |
|
|
|
expect(res.body.find(r => r.name === record.name)).toBeDefined() |
|
|
|
}) |
|
|
|
|
|
|
|
it("should apply authorization to endpoint", async () => { |
|
|
|
await testPermissionsForEndpoint({ |
|
|
|
request, |
|
|
|
method: "GET", |
|
|
|
url: `/api/${instance._id}/${model._id}/records`, |
|
|
|
instanceId: instance._id, |
|
|
|
permissionName: READ_MODEL, |
|
|
|
itemId: model._id, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
describe("delete", () => { |
|
|
|
|
|
|
|
it("should remove a record", async () => { |
|
|
|
const createRes = await createRecord() |
|
|
|
|
|
|
|
await request |
|
|
|
.delete(`/api/${instance._id}/${model._id}/records/${createRes.body._id}/${createRes.body._rev}`) |
|
|
|
.set(defaultHeaders) |
|
|
|
.expect(200) |
|
|
|
|
|
|
|
it("load should return 404 when record does not exist", async () => { |
|
|
|
await createRecord() |
|
|
|
await request |
|
|
|
.get(`/api/${instance._id}/${model._id}/records/${createRes.body._id}`) |
|
|
|
.get(`/api/${instance._id}/${model._id}/records/not-a-valid-id`) |
|
|
|
.set(defaultHeaders) |
|
|
|
.expect('Content-Type', /json/) |
|
|
|
.expect(404) |
|
|
|
}) |
|
|
|
|
|
|
|
it("should apply authorization to endpoint", async () => { |
|
|
|
const createRes = await createRecord() |
|
|
|
await testPermissionsForEndpoint({ |
|
|
|
request, |
|
|
|
method: "DELETE", |
|
|
|
url: `/api/${instance._id}/${model._id}/records/${createRes.body._id}/${createRes.body._rev}`, |
|
|
|
instanceId: instance._id, |
|
|
|
permissionName: WRITE_MODEL, |
|
|
|
itemId: model._id, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
describe("validate", () => { |
|
|
|
@ -224,4 +146,4 @@ describe("/records", () => { |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |