Skip to content

Commit

Permalink
Merge pull request #123 from Akord-com/release/4.0.0 BREAKING CHANGE
Browse files Browse the repository at this point in the history
major: release 4.0.0
  • Loading branch information
wkolod authored Apr 25, 2023
2 parents 03e28ff + 2c70343 commit a825b7a
Show file tree
Hide file tree
Showing 60 changed files with 2,084 additions and 2,501 deletions.
263 changes: 169 additions & 94 deletions README.md

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions babel.config.js

This file was deleted.

6 changes: 2 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,11 @@
"node": ">=16.0.0"
},
"dependencies": {
"@akord/crypto": "0.10.1",
"@akord/akord-auth": "0.25.0",
"@akord/crypto": "0.10.6",
"@akord/ts-cacheable": "1.0.11",
"amazon-cognito-identity-js": "^5.2.8",
"axios": "^0.24.0",
"blueimp-load-image": "^5.16.0",
"cross-fetch": "^3.1.5",
"lodash": "^4.17.21",
"mime-types": "^2.1.35",
"pdfjs-dist": "^2.16.105",
Expand All @@ -46,7 +45,6 @@
"web-streams-polyfill": "^3.2.1"
},
"devDependencies": {
"@babel/preset-env": "^7.12.1",
"@faker-js/faker": "^6.2.0",
"@types/blueimp-load-image": "^5.16.0",
"@types/jest": "^27.4.0",
Expand Down
61 changes: 18 additions & 43 deletions src/__tests__/batch.test.ts
Original file line number Diff line number Diff line change
@@ -1,63 +1,37 @@
import { Akord } from "../index";
import faker from '@faker-js/faker';
import { initInstance } from './helpers';
import { initInstance, folderCreate, noteCreate, testDataPath, vaultCreate } from './common';
import { email, email2, email3, password } from './data/test-credentials';
import { NodeJs } from "../types/file";
import { firstFileName } from "./data/content";

let akord: Akord;

jest.setTimeout(3000000);

async function vaultCreate() {
const name = faker.random.words();
const termsOfAccess = faker.lorem.sentences();
const { vaultId, membershipId } = await akord.vault.create(name, termsOfAccess);

const membership = await akord.membership.get(membershipId);
expect(membership.status).toEqual("ACCEPTED");
expect(membership.role).toEqual("OWNER");

const vault = await akord.vault.get(vaultId);
expect(vault.status).toEqual("ACTIVE");
expect(vault.name).toEqual(name);
return { vaultId };
}

describe("Testing batch actions", () => {
let vaultId: string;
let folderId: string;
let noteId: string;
let membershipId1: string;
let membershipId2: string;
let viewerId: string;
let contributorId: string;

beforeEach(async () => {
akord = await initInstance(email, password);
});

beforeAll(async () => {
akord = await initInstance(email, password);
vaultId = (await vaultCreate()).vaultId;
vaultId = (await vaultCreate(akord)).vaultId;
});

describe("Batch revoke/restore actions", () => {
it("should create folder", async () => {
const name = faker.random.words();
folderId = (await akord.folder.create(vaultId, name)).folderId;

const folder = await akord.folder.get(folderId);
expect(folder.status).toEqual("ACTIVE");
expect(folder.parentId).toBeFalsy();
expect(folder.name).toEqual(name);
folderId = await folderCreate(akord, vaultId);
});

it("should create note", async () => {
const name = faker.random.words();
const content = faker.lorem.sentences();

noteId = (await akord.note.create(vaultId, content, name)).noteId;

const note = await akord.note.get(noteId);
expect(note.versions.length).toEqual(1);
noteId = await noteCreate(akord, vaultId);
});

it("should revoke all items in a batch", async () => {
Expand Down Expand Up @@ -89,22 +63,23 @@ describe("Testing batch actions", () => {

describe("Batch upload", () => {
it("should upload a batch of 10 files", async () => {
const file = NodeJs.File.fromPath("./src/__tests__/data/logo.png");
const file = await NodeJs.File.fromPath(testDataPath + firstFileName);

const items = [] as { file: any, name: string }[];

for (let i = 0; i < 10; i++) {
for (let i = 0; i < 2; i++) {
const name = faker.random.words();
items.push({ file, name });
}

const response = await akord.batch.stackCreate(vaultId, items);
const response = (await akord.batch.stackCreate(vaultId, items)).data;

for (let index in items) {
const stack = await akord.stack.get(response[index].stackId);
expect(stack.status).toEqual("ACTIVE");
expect(stack.name).toEqual(response[index].object.name);
expect(stack.versions.length).toEqual(1);
expect(stack.versions[0].title).toEqual("logo.png");
expect(stack.versions[0].name).toEqual(firstFileName);
}
});
});
Expand All @@ -120,11 +95,11 @@ describe("Testing batch actions", () => {
for (let item of response) {
const membership = await akord.membership.get(item.membershipId);
if (membership.email === email2) {
membershipId1 = item.membershipId;
contributorId = item.membershipId;
expect(membership.status).toEqual("PENDING");
expect(membership.role).toEqual("CONTRIBUTOR");
} else {
membershipId2 = item.membershipId;
viewerId = item.membershipId;
expect(membership.status).toEqual("PENDING");
expect(membership.role).toEqual("VIEWER");
}
Expand All @@ -133,14 +108,14 @@ describe("Testing batch actions", () => {

it("should change access", async () => {
await akord.batch.membershipChangeRole([
{ id: membershipId1, role: "VIEWER" },
{ id: membershipId2, role: "CONTRIBUTOR" }
{ id: contributorId, role: "VIEWER" },
{ id: viewerId, role: "CONTRIBUTOR" }
])

const membership1 = await akord.membership.get(membershipId1);
const membership1 = await akord.membership.get(contributorId);
expect(membership1.role).toEqual("VIEWER");

const membership2 = await akord.membership.get(membershipId2);
const membership2 = await akord.membership.get(viewerId);
expect(membership2.role).toEqual("CONTRIBUTOR");
});
});
Expand Down
53 changes: 53 additions & 0 deletions src/__tests__/common.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { Akord, Auth } from "../index";
import faker from '@faker-js/faker';

export async function initInstance(email: string, password: string): Promise<Akord> {
const { wallet } = await Auth.signIn(email, password);
return new Akord(wallet, { debug: true });
}

export const vaultCreate = async (akord: Akord) => {
const name = faker.random.words();
const termsOfAccess = faker.lorem.sentences();
const { vaultId, membershipId } = await akord.vault.create(name, { termsOfAccess });

const membership = await akord.membership.get(membershipId);
expect(membership.status).toEqual("ACCEPTED");
expect(membership.role).toEqual("OWNER");

const vault = await akord.vault.get(vaultId);
expect(vault.status).toEqual("ACTIVE");
expect(vault.name).toEqual(name);
return { vaultId, membershipId };
}

export const folderCreate = async (akord: Akord, vaultId: string, parentId?: string) => {
const name = faker.random.words();
const { folderId } = await akord.folder.create(vaultId, name, { parentId: parentId });

const folder = await akord.folder.get(folderId);
expect(folder.status).toEqual("ACTIVE");
if (parentId) {
expect(folder.parentId).toEqual(parentId);
} else {
expect(folder.parentId).toBeFalsy();
}
expect(folder.name).toEqual(name);
return folderId;
}

export const noteCreate = async (akord: Akord, vaultId: string) => {
const name = faker.random.words();
const content = faker.lorem.sentences();

const { noteId } = await akord.note.create(vaultId, content, name);

const note = await akord.note.get(noteId);
expect(note.versions.length).toEqual(1);
const { name: fileName, data } = await akord.note.getVersion(noteId);
expect(data).toEqual(content);
expect(fileName).toEqual(name);
return noteId;
}

export const testDataPath = "./src/__tests__/data/";
6 changes: 5 additions & 1 deletion src/__tests__/data/content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@ export const publicVaultId = "RNACU80_GqwUBS0annCpcaD7evriSU9mid_s-K0yvvA";
export const parentId = "33408770-f188-4586-a9ac-e50297a85eb5";
export const privateVaultId = 'j8C-RDy0F5zwQvrzesL0QaaKk7bjnLhYBFp8xpqV37k';
export const fileId = 'efb8ed89-3221-48e7-b1e5-9b94eef41319';
export const message = 'Quae vel nemo dolorum recusandae temporibus temporibus. Hic id eum quo sint atque voluptates voluptatum. Vero sit aliquid. Nam omnis repudiandae. Corporis quasi ex id incidunt suscipit non. In ea impedit. Consequatur voluptatem et nihil ut debitis similique. Eligendi ut voluptatum fuga eos a ab iure alias molestiae. Sed reiciendis aut sapiente natus inventore iure nesciunt architecto veritatis. Ea omnis similique incidunt voluptas sit pariatur officia nihil cupiditate. Voluptas nobis molestias quia voluptas saepe labore quia consequatur dolorem. Ut quia quis ut iste inventore excepturi. Dolores incidunt eum quia aspernatur et architecto cumque provident architecto. Maiores occaecati suscipit repellat. Quia illum ex doloribus porro. Ipsa doloribus atque et aut molestiae quam magnam enim. Laborum totam adipisci non dolor neque quos saepe. Qui consequuntur sapiente quis non sit explicabo expedita. Odio voluptatibus neque maxime autem harum facilis optio. Eum esse ipsam itaque minima quia repudiandae. Cum eveniet voluptatum consequatur. Dolor mollitia perferendis fuga impedit quia enim consectetur non. Quibusdam nostrum sit at quae sit ducimus blanditiis a deserunt. Qui aperiam id est architecto ut. Ut dolores soluta consequatur at expedita. Et blanditiis nam quam cumque. Similique aut animi voluptas id quam. Id rerum est architecto dolorem quae rerum autem voluptatem. Id cum impedit est cumque quod dolores aut. Qui quo autem vel. Autem sapiente voluptates rerum architecto necessitatibus doloremque consequatur iure quo. Veritatis tenetur voluptatem praesentium. Et sit architecto veritatis modi voluptatem iusto voluptates neque. Soluta explicabo qui provident velit sunt. Quia nisi deleniti perferendis quo et enim explicabo eos. Tempore amet quisquam itaque et corrupti inventore quia illo deserunt. Voluptatum animi et. Earum in vitae nemo officia qui necessitatibus animi totam. Totam amet beatae ex totam quia est labore. Id voluptates voluptatibus. Beatae eos corporis sed ratione ipsa eum vel placeat. Voluptas est quam atque non iure necessitatibus. Ab et numquam excepturi rem vel hic delectus voluptatem. Ut et hic animi minus sint et. Commodi explicabo est quo veniam ratione quisquam iure ducimus sit. Molestias cum voluptas consectetur necessitatibus nobis eveniet veritatis reiciendis illo. Ex est officia eveniet eveniet enim voluptatum iusto labore vitae. Quam eum vero ratione veritatis ex voluptatibus. Vel repellendus voluptatum autem doloremque cupiditate cumque. Delectus aut esse occaecati.'
export const message = 'Quae vel nemo dolorum recusandae temporibus temporibus. Hic id eum quo sint atque voluptates voluptatum. Vero sit aliquid. Nam omnis repudiandae. Corporis quasi ex id incidunt suscipit non. In ea impedit. Consequatur voluptatem et nihil ut debitis similique. Eligendi ut voluptatum fuga eos a ab iure alias molestiae. Sed reiciendis aut sapiente natus inventore iure nesciunt architecto veritatis. Ea omnis similique incidunt voluptas sit pariatur officia nihil cupiditate. Voluptas nobis molestias quia voluptas saepe labore quia consequatur dolorem. Ut quia quis ut iste inventore excepturi. Dolores incidunt eum quia aspernatur et architecto cumque provident architecto. Maiores occaecati suscipit repellat. Quia illum ex doloribus porro. Ipsa doloribus atque et aut molestiae quam magnam enim. Laborum totam adipisci non dolor neque quos saepe. Qui consequuntur sapiente quis non sit explicabo expedita. Odio voluptatibus neque maxime autem harum facilis optio. Eum esse ipsam itaque minima quia repudiandae. Cum eveniet voluptatum consequatur. Dolor mollitia perferendis fuga impedit quia enim consectetur non. Quibusdam nostrum sit at quae sit ducimus blanditiis a deserunt. Qui aperiam id est architecto ut. Ut dolores soluta consequatur at expedita. Et blanditiis nam quam cumque. Similique aut animi voluptas id quam. Id rerum est architecto dolorem quae rerum autem voluptatem. Id cum impedit est cumque quod dolores aut. Qui quo autem vel. Autem sapiente voluptates rerum architecto necessitatibus doloremque consequatur iure quo. Veritatis tenetur voluptatem praesentium. Et sit architecto veritatis modi voluptatem iusto voluptates neque. Soluta explicabo qui provident velit sunt. Quia nisi deleniti perferendis quo et enim explicabo eos. Tempore amet quisquam itaque et corrupti inventore quia illo deserunt. Voluptatum animi et. Earum in vitae nemo officia qui necessitatibus animi totam. Totam amet beatae ex totam quia est labore. Id voluptates voluptatibus. Beatae eos corporis sed ratione ipsa eum vel placeat. Voluptas est quam atque non iure necessitatibus. Ab et numquam excepturi rem vel hic delectus voluptatem. Ut et hic animi minus sint et. Commodi explicabo est quo veniam ratione quisquam iure ducimus sit. Molestias cum voluptas consectetur necessitatibus nobis eveniet veritatis reiciendis illo. Ex est officia eveniet eveniet enim voluptatum iusto labore vitae. Quam eum vero ratione veritatis ex voluptatibus. Vel repellendus voluptatum autem doloremque cupiditate cumque. Delectus aut esse occaecati.'

export const firstFileName = "logo.png";
export const secondFileName = "avatar.jpeg";
export const arweaveImportFileTx = "kzGxbFW_oJ3PyYneRs9cPrChQ-k-8Fym5k9PCZNJ_HA";
41 changes: 5 additions & 36 deletions src/__tests__/folder.test.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
import { Akord } from "../index";
import faker from '@faker-js/faker';
import { initInstance } from './helpers';
import { initInstance, folderCreate, vaultCreate } from './common';
import { email, password } from './data/test-credentials';

let akord: Akord;

jest.setTimeout(3000000);

async function vaultCreate() {
const name = faker.random.words();
const termsOfAccess = faker.lorem.sentences();
const { vaultId, membershipId } = await akord.vault.create(name, termsOfAccess);

const membership = await akord.membership.get(membershipId);
expect(membership.status).toEqual("ACCEPTED");
expect(membership.role).toEqual("OWNER");

const vault = await akord.vault.get(vaultId);
expect(vault.status).toEqual("ACTIVE");
expect(vault.name).toEqual(name);
return { vaultId };
}

describe("Testing folder functions", () => {
let vaultId: string;
let rootFolderId: string;
Expand All @@ -33,31 +18,15 @@ describe("Testing folder functions", () => {

beforeAll(async () => {
akord = await initInstance(email, password);
vaultId = (await vaultCreate()).vaultId;
vaultId = (await vaultCreate(akord)).vaultId;
});

it("should create root folder", async () => {
const name = faker.random.words();
const { folderId } = await akord.folder.create(vaultId, name);

rootFolderId = folderId;

const rootFolder = await akord.folder.get(rootFolderId);
expect(rootFolder.status).toEqual("ACTIVE");
expect(rootFolder.parentId).toBeFalsy();
expect(rootFolder.name).toEqual(name);
rootFolderId = await folderCreate(akord, vaultId);
});

it("should create a sub folder", async () => {
const name = faker.random.words();
const { folderId } = await akord.folder.create(vaultId, name, rootFolderId);

subFolderId = folderId;

const subFolder = await akord.folder.get(subFolderId);
expect(subFolder.status).toEqual("ACTIVE");
expect(subFolder.parentId).toEqual(rootFolderId);
expect(subFolder.name).toEqual(name);
subFolderId = await folderCreate(akord, vaultId, rootFolderId);
});

it("should revoke root folder", async () => {
Expand All @@ -73,7 +42,7 @@ describe("Testing folder functions", () => {
it("should fail adding new sub-folder to the revoked root folder", async () => {
const name = faker.random.words();
await expect(async () =>
await akord.folder.create(vaultId, name, rootFolderId)
await akord.folder.create(vaultId, name, { parentId: rootFolderId })
).rejects.toThrow(Error);
});

Expand Down
6 changes: 0 additions & 6 deletions src/__tests__/helpers.ts

This file was deleted.

35 changes: 8 additions & 27 deletions src/__tests__/manifest.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Akord } from "../index";
import faker from '@faker-js/faker';
import { initInstance } from './helpers';
import { initInstance, vaultCreate } from './common';
import { email, password } from './data/test-credentials';
import { createFileLike } from "../core/file";

Expand Down Expand Up @@ -36,30 +35,6 @@ const manifest = {
}
};

async function vaultCreate() {
const name = faker.random.words();
const termsOfAccess = faker.lorem.sentences();
const { vaultId, membershipId } = await akord.vault.create(name, termsOfAccess, true);
console.log("created vault", name);

const membership = await akord.membership.get(membershipId);
expect(membership.status).toEqual("ACCEPTED");
expect(membership.role).toEqual("OWNER");

const htmlSrc = "<html><body><h1>Hello World</h2></body></html>";
const htmlFile = await createFileLike([htmlSrc], "index.html", "text/html");
const { stackId } = await akord.stack.create(vaultId, htmlFile, "index.html");
console.log("uploaded index.html", stackId);

const vault = await akord.vault.get(vaultId);
expect(vault.status).toEqual("ACTIVE");
expect(vault.name).toEqual(name);

console.log(vaultId, name);

return { vaultId };
}

describe("Testing manifest functions", () => {
let vaultId: string;

Expand All @@ -69,7 +44,13 @@ describe("Testing manifest functions", () => {

beforeAll(async () => {
akord = await initInstance(email, password);
vaultId = (await vaultCreate()).vaultId;
vaultId = (await vaultCreate(akord)).vaultId;

// upload html file
const htmlSrc = "<html><body><h1>Hello World</h1></body></html>";
const htmlFile = await createFileLike([htmlSrc], "index.html", "text/html");
const { stackId } = await akord.stack.create(vaultId, htmlFile, "index.html");
console.log("uploaded index.html", stackId);
});

// it("should create new manifest", async () => {
Expand Down
Loading

0 comments on commit a825b7a

Please sign in to comment.