@webda/core
Version:
Expose API with Lambda
191 lines • 8.3 kB
JavaScript
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