OSSecureFileWrapper/src/test.ts

173 lines
6.1 KiB
TypeScript

import SecureFile, { NotFound } from "./index";
import * as v4 from "uuid/v4"
import { TextEncoder, TextDecoder } from "util";
const testname = "ouiavgbsop687463743"
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const testdata = encoder.encode("Ich bin ein Test");
const newTestData = encoder.encode("neue test daten");
const newTestDataOld = encoder.encode("neue test daten asd");
const testprev = "Ich bin...";
const testfolder = "iabos";
let ftestid;
import { expect } from "chai"
function test(sf: SecureFile) {
let testid: string;
let testver: string;
let testver2: string;
it("create", async () => {
let res = await sf.create(testname, testdata, "text", undefined, testprev)
expect(res, "Res isnnot set").to.exist;
expect(res._id, "Res has no _id").to.exist;
testid = res._id;
testver = res.active.version;
})
it("get", async () => {
let res = await sf.get(testid);
expect(res, "No data returned").to.exist;
expect(decoder.decode(res), "Returned data not equal to stored").to.be.equal(decoder.decode(testdata));
})
it("get - fail", async () => {
const inverr = new Error("Should have failed!");
try {
await sf.get(testid + "asod");
throw inverr
} catch (err) {
if (err !== inverr) {
expect(err).to.be.instanceOf(NotFound);
}
}
})
it("list", async () => {
let res = await sf.list();
expect(Array.isArray(res), "Is not from type Array").to.be.true;
expect(res.length, "No elements returned").to.greaterThan(0);
let found = !!res.find(e => e._id === testid);
expect(found, "Element not in List").to.be.true;
})
it("update to history", async () => {
let res = await sf.update(testid, newTestDataOld, undefined, undefined, true);
expect(res, "No data returned").to.exist;
expect(res._id, "_id missing").to.exist;
expect(res.active.version, "New version was created").to.equal(testver);
let res2 = await sf.get(testid);
expect(decoder.decode(res2), "Fetched data not updated").to.be.equal(decoder.decode(testdata));
})
it("update", async () => {
let res = await sf.update(testid, newTestData, undefined);
expect(res, "No data returned").to.exist;
expect(res._id, "_id missing").to.exist;
expect(res.active.version, "No new version was created").to.not.equal(testver);
testver2 = res.active.version;
let res2 = await sf.get(testid);
expect(decoder.decode(res2), "Fetched data not updated").to.be.equal(decoder.decode(newTestData));
})
it("history", async () => {
let his = await sf.history(testid);
expect(his, "no data returned").to.exist;
expect(his.file, "file not set").to.exist;
expect(his.history, "history not set").to.exist;
expect(his.history.length, `Not expected history length. Expected 1 got ${his.history.length}`).to.be.equal(2);
expect(his.history[1].version, "Wrong version on history").to.be.equal(testver);
expect(his.file.active.version, "Wrong version on file").to.be.equal(testver2);
});
it("history get old", async () => {
let arch = await sf.get(testid, testver);
expect(decoder.decode(arch), "Old version has wrong data").to.be.equal(decoder.decode(testdata));
})
it("history restore", async () => {
await sf.restore(testid, testver);
let res = await sf.get(testid);
expect(res, "No data returned").to.exist;
expect(decoder.decode(res), "Returned data not equal to stored").to.be.equal(decoder.decode(testdata));
})
it("delete", async () => {
await sf.delete(testid);
})
describe("fixed id", () => {
let id = v4();
it("create", async () => {
let res = await sf.create(testname, testdata, "text", undefined, testprev, id)
expect(res, "Res isnnot set").to.exist;
expect(res._id, "Res has no _id").to.exist;
expect(res._id, "Res has invalid _id").to.be.equal(id)
})
it("get", async () => {
let res = await sf.get(id);
expect(res, "No data returned").to.exist;
expect(decoder.decode(res), "Returned data not equal to stored").to.be.equal(decoder.decode(testdata));
})
})
describe("predefined date", () => {
let id = v4();
it("create", async () => {
const date = new Date("2017-01-01T00:00:00.000Z")
let res = await sf.create(testname, testdata, "text", undefined, testprev, id, date)
expect(res, "Res isnnot set").to.exist;
expect(res._id, "Res has no _id").to.exist;
expect(res._id, "Res has invalid _id").to.be.equal(id)
expect(res.active.time.toJSON()).to.be.equal(date.toJSON())
})
it("list", async () => {
let res = await sf.get(id);
expect(res, "No data returned").to.exist;
expect(decoder.decode(res), "Returned data not equal to stored").to.be.equal(decoder.decode(testdata));
})
})
describe("folder", () => {
it("create", async () => {
let res = await sf.create(testname, testdata, "text", testfolder, testprev)
expect(res, "Res not set").to.exist;
expect(res._id, "No _id field").to.exist;
ftestid = res._id;
testver = res.active.version;
})
it("list", async () => {
let res = await sf.list(testfolder);
expect(Array.isArray(res), "Is from type Array").to.be.true;
expect(res.length, "Do elements exist?").to.be.greaterThan(0);
let found = false;
res.forEach(e => {
if (e._id === ftestid) {
found = true;
}
})
expect(found, "Element is not in List").to.exist;
})
it("delete", async () => {
await sf.delete(ftestid);
});
})
}
describe("SecureFile Tests", function () {
let sf = new SecureFile("http://localhost:3004");
sf.jwtObservable.subscribe((callback) => {
callback[0]("TESTJWT");
})
test(sf)
})