Differential D350 Diff 1272 lib/app/base-chips/special_filters/IsReferencedByResourcesMatching.subtest.js
Changeset View
Changeset View
Standalone View
Standalone View
lib/app/base-chips/special_filters/IsReferencedByResourcesMatching.subtest.js
const assert = require("assert"); | const assert = require("assert"); | ||||
const locreq = require("locreq")(__dirname); | const locreq = require("locreq")(__dirname); | ||||
const Promise = require("bluebird"); | const Promise = require("bluebird"); | ||||
const { create_resource_as } = locreq("test_utils"); | |||||
const { with_running_app } = locreq("test_utils/with-test-app.js"); | const { with_running_app } = locreq("test_utils/with-test-app.js"); | ||||
describe("IsReferencedByResourcesMatching", () => { | describe("IsReferencedByResourcesMatching", () => { | ||||
async function setup(app) { | async function setup(app, rest_api) { | ||||
const port = app.ConfigManager.get("www-server.port"); | |||||
const Users = app.ChipManager.get_chip("collection", "users"); | const Users = app.ChipManager.get_chip("collection", "users"); | ||||
Users.set_access_strategy({ | Users.set_access_strategy({ | ||||
create: "public", | create: "public", | ||||
show: "public", | show: "public", | ||||
}); | }); | ||||
const UsersRoles = app.createChip(app.Sealious.Collection, { | const UsersRoles = app.createChip(app.Sealious.Collection, { | ||||
name: "users-roles", | name: "users-roles", | ||||
Show All 39 Lines | const users = [ | ||||
}, | }, | ||||
{ | { | ||||
username: "user", | username: "user", | ||||
password: "user_password", | password: "user_password", | ||||
email: "any3@example.com", | email: "any3@example.com", | ||||
}, | }, | ||||
]; | ]; | ||||
const created_users = await Promise.map(users, user => | for (let user of users) { | ||||
create_resource_as({ | const { id, username } = await rest_api.post( | ||||
collection: "users", | "/api/v1/collections/users", | ||||
resource: user, | user | ||||
port, | |||||
}) | |||||
); | |||||
await Promise.map(created_users, user => | |||||
create_resource_as({ | |||||
collection: "users-roles", | |||||
resource: { | |||||
user: user.id, | |||||
role: user.body.username, | |||||
}, | |||||
port, | |||||
}) | |||||
); | ); | ||||
await rest_api.post("/api/v1/collections/users-roles", { | |||||
user: id, | |||||
role: username, | |||||
}); | |||||
} | |||||
} | } | ||||
it("returns only users with role matching `allowed_values`", () => | it("returns only users with role matching `allowed_values`", () => | ||||
with_running_app(async ({ app, rest_api }) => { | with_running_app(async ({ app, rest_api }) => { | ||||
await setup(app); | await setup(app, rest_api); | ||||
return rest_api | return rest_api | ||||
.get("/api/v1/collections/users/@staff") | .get("/api/v1/collections/users/@staff") | ||||
.then(({ items }) => { | .then(({ items }) => { | ||||
assert(items.length > 0); | assert(items.length > 0); | ||||
items.forEach(user => | items.forEach(user => | ||||
assert( | assert( | ||||
user.body.username === "admin" || | user.username === "admin" || | ||||
user.body.username === "moderator" | user.username === "moderator" | ||||
) | ) | ||||
); | ); | ||||
}); | }); | ||||
})); | })); | ||||
}); | }); |