UNPKG

@webda/core

Version:

Expose API with Lambda

191 lines 8.3 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { suite, test } from "@testdeck/mocha"; import * as assert from "assert"; import { HttpContext } from "../index.js"; import { WebdaTest } from "../test.js"; let OwnerModelTest = class OwnerModelTest extends WebdaTest { async before() { await super.before(); this._ctx = await this.webda.newWebContext(new HttpContext("test.webda.io", "GET", "/")); this._session = await this._ctx.newSession(); this._session.login("none", "none"); // @ts-ignore this._ctx.getCurrentUser = async () => { return this._user; }; this._taskStore = this.webda.getService("Tasks"); this._userStore = this.webda.getService("Users"); assert.notStrictEqual(this._taskStore, undefined); assert.notStrictEqual(this._userStore, undefined); } async beforeEach() { await this._taskStore.__clean(); await this._userStore.__clean(); this._ctx = await this.newContext({}); await this._ctx.init(); this._session = this._ctx.getSession(); await this._taskStore.save({ _user: "fake_user", uuid: "task_user1", name: "for_schema" }); await this._taskStore.save({ _user: "fake_user2", uuid: "task_user2" }); await this._taskStore.save({ _user: "fake_user3", uuid: "task_public", public: true }); await this._taskStore.save({ uuid: "task_no_owner" }); } async postNotLogged() { await this.beforeEach(); let executor = this.getExecutor(this._ctx, "test.webda.io", "POST", "/tasks", { name: "Task #1" }); assert.notStrictEqual(executor, undefined); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async post() { let executor = this.getExecutor(this._ctx, "test.webda.io", "POST", "/tasks", { name: "Task #1" }); this._session.login("fake_user", "fake_ident"); await executor.execute(this._ctx); let task = JSON.parse(this._ctx.getResponseBody()); assert.strictEqual(task.name, "Task #1"); } async getWrongOwner() { await this.beforeEach(); this._ctx.getSession().login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_no_owner", {}); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async getNoOwner() { await this.beforeEach(); this._ctx.getSession().login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_user1", {}); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async putWrongOwner() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "PUT", "/tasks/task_user1", {}); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async put() { await this.beforeEach(); this._session.login("fake_user", "fake_ident"); await this.execute(this._ctx, "test.webda.io", "PUT", "/tasks/task_user1", { public: true, name: "needed" }); let result = JSON.parse(this._ctx.getResponseBody()); assert.strictEqual(result.uuid, "task_user1"); assert.strictEqual(result.public, true); } async getPublic() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_public"); await executor.execute(this._ctx); let result = JSON.parse(this._ctx.getResponseBody()); assert.strictEqual(result.uuid, "task_public"); } async queryPermission() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let res = await this._taskStore.query("", this._ctx); assert.deepStrictEqual(res.results.map(r => r.getUuid()).sort(), ["task_public", "task_user2"]); res = await this._taskStore.query(""); assert.deepStrictEqual(res.results.length, 4); res = await this._taskStore.query("uuid = 'task_user1'", this._ctx); assert.deepStrictEqual(res.results.length, 0); res = await this._taskStore.query("uuid = 'task_public'", this._ctx); assert.deepStrictEqual(res.results.length, 1); } async actions() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "GET", "/tasks/task_user1/actionable"); await executor.execute(this._ctx); executor = this.getExecutor(this._ctx, "test.webda.io", "PUT", "/tasks/task_user1/impossible"); await assert.rejects(() => executor.execute(this._ctx), /No permission/); } async delete() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_user2"); await executor.execute(this._ctx); } async deleteWrongOwner() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_user1"); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async deleteWrongOwnerPublic() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_public"); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 403); } async deleteUnknown() { await this.beforeEach(); this._session.login("fake_user2", "fake_ident"); let executor = this.getExecutor(this._ctx, "test.webda.io", "DELETE", "/tasks/task_unknown"); await assert.rejects(() => executor.execute(this._ctx), (err) => err.getResponseCode() === 404); } }; __decorate([ test("POST - not logged") ], OwnerModelTest.prototype, "postNotLogged", null); __decorate([ test("POST") ], OwnerModelTest.prototype, "post", null); __decorate([ test("GET - wrong owner") ], OwnerModelTest.prototype, "getWrongOwner", null); __decorate([ test("GET - no owner") ], OwnerModelTest.prototype, "getNoOwner", null); __decorate([ test("PUT - wrong owner") ], OwnerModelTest.prototype, "putWrongOwner", null); __decorate([ test("PUT") ], OwnerModelTest.prototype, "put", null); __decorate([ test("GET - public") ], OwnerModelTest.prototype, "getPublic", null); __decorate([ test("Query") ], OwnerModelTest.prototype, "queryPermission", null); __decorate([ test("Actions") ], OwnerModelTest.prototype, "actions", null); __decorate([ test("DELETE") ], OwnerModelTest.prototype, "delete", null); __decorate([ test("DELETE - wrong owner") ], OwnerModelTest.prototype, "deleteWrongOwner", null); __decorate([ test("DELETE - wrong owner - public") ], OwnerModelTest.prototype, "deleteWrongOwnerPublic", null); __decorate([ test("DELETE - unknown") ], OwnerModelTest.prototype, "deleteUnknown", null); OwnerModelTest = __decorate([ suite ], OwnerModelTest); //# sourceMappingURL=ownermodel.spec.js.map