|
|
|
@ -9,22 +9,22 @@ import Project from '../../../../src/lib/models/Project'
|
|
|
|
|
import { expect } from 'chai' |
|
|
|
|
|
|
|
|
|
function projectTest() { |
|
|
|
|
let context; |
|
|
|
|
let project; |
|
|
|
|
let context |
|
|
|
|
let project |
|
|
|
|
|
|
|
|
|
beforeEach(async function () { |
|
|
|
|
context = await init(); |
|
|
|
|
beforeEach(async function() { |
|
|
|
|
context = await init() |
|
|
|
|
|
|
|
|
|
project = await createProject(context); |
|
|
|
|
}); |
|
|
|
|
project = await createProject(context) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Get project info', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
|
.get(`/api/v1/db/meta/projects/${project.id}/info`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send({}) |
|
|
|
|
.expect(200); |
|
|
|
|
}); |
|
|
|
|
.expect(200) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// todo: Test by creating models under project and check if the UCL is working
|
|
|
|
|
it('UI ACL', async () => { |
|
|
|
@ -32,8 +32,8 @@ function projectTest() {
|
|
|
|
|
.get(`/api/v1/db/meta/projects/${project.id}/visibility-rules`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send({}) |
|
|
|
|
.expect(200); |
|
|
|
|
}); |
|
|
|
|
.expect(200) |
|
|
|
|
}) |
|
|
|
|
// todo: Test creating visibility set
|
|
|
|
|
|
|
|
|
|
it('List projects', async () => { |
|
|
|
@ -41,11 +41,11 @@ function projectTest() {
|
|
|
|
|
.get('/api/v1/db/meta/projects/') |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send({}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
if (response.body.list.length !== 1) new Error('Should list only 1 project'); |
|
|
|
|
if (!response.body.pageInfo) new Error('Should have pagination info'); |
|
|
|
|
}); |
|
|
|
|
if (response.body.list.length !== 1) new Error('Should list only 1 project') |
|
|
|
|
if (!response.body.pageInfo) new Error('Should have pagination info') |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Create project', async () => { |
|
|
|
|
const response = await request(context.app) |
|
|
|
@ -54,11 +54,11 @@ function projectTest() {
|
|
|
|
|
.send({ |
|
|
|
|
title: 'Title1', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const newProject = await Project.getByTitleOrId(response.body.id); |
|
|
|
|
if (!newProject) return new Error('Project not created'); |
|
|
|
|
}); |
|
|
|
|
const newProject = await Project.getByTitleOrId(response.body.id) |
|
|
|
|
if (!newProject) return new Error('Project not created') |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Create projects with existing title', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
@ -67,8 +67,8 @@ function projectTest() {
|
|
|
|
|
.send({ |
|
|
|
|
title: project.title, |
|
|
|
|
}) |
|
|
|
|
.expect(400); |
|
|
|
|
}); |
|
|
|
|
.expect(400) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// todo: fix passport user role popluation bug
|
|
|
|
|
// it('Delete project', async async () => {
|
|
|
|
@ -99,10 +99,10 @@ function projectTest() {
|
|
|
|
|
.get(`/api/v1/db/meta/projects/${project.id}`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send() |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
if (response.body.id !== project.id) return new Error('Got the wrong project'); |
|
|
|
|
}); |
|
|
|
|
if (response.body.id !== project.id) return new Error('Got the wrong project') |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Update projects', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
@ -111,18 +111,18 @@ function projectTest() {
|
|
|
|
|
.send({ |
|
|
|
|
title: 'NewTitle', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const newProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
if (newProject.title !== 'NewTitle') { |
|
|
|
|
return new Error('Project not updated'); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
const newProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
if (newProject.title !== 'NewTitle') { |
|
|
|
|
return new Error('Project not updated') |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Update projects with existing title', async function () { |
|
|
|
|
it('Update projects with existing title', async function() { |
|
|
|
|
const newProject = await createProject(context, { |
|
|
|
|
title: 'NewTitle1', |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.patch(`/api/v1/db/meta/projects/${project.id}`) |
|
|
|
@ -130,8 +130,8 @@ function projectTest() {
|
|
|
|
|
.send({ |
|
|
|
|
title: newProject.title, |
|
|
|
|
}) |
|
|
|
|
.expect(400); |
|
|
|
|
}); |
|
|
|
|
.expect(400) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Create project shared base', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
@ -141,18 +141,18 @@ function projectTest() {
|
|
|
|
|
roles: 'viewer', |
|
|
|
|
password: 'test', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
|
|
|
|
|
if ( |
|
|
|
|
!updatedProject.uuid || |
|
|
|
|
updatedProject.roles !== 'viewer' || |
|
|
|
|
updatedProject.password !== 'test' |
|
|
|
|
) { |
|
|
|
|
return new Error('Shared base not configured properly'); |
|
|
|
|
return new Error('Shared base not configured properly') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Created project shared base should have only editor or viewer role', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
@ -162,17 +162,17 @@ function projectTest() {
|
|
|
|
|
roles: 'commenter', |
|
|
|
|
password: 'test', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
|
|
|
|
|
if (updatedProject.roles === 'commenter') { |
|
|
|
|
return new Error('Shared base not configured properly'); |
|
|
|
|
return new Error('Shared base not configured properly') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Updated project shared base should have only editor or viewer role', async () => { |
|
|
|
|
await createSharedBase(context.app, context.token, project); |
|
|
|
|
await createSharedBase(context.app, context.token, project) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.patch(`/api/v1/db/meta/projects/${project.id}/shared`) |
|
|
|
@ -181,17 +181,17 @@ function projectTest() {
|
|
|
|
|
roles: 'commenter', |
|
|
|
|
password: 'test', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
|
|
|
|
|
if (updatedProject.roles === 'commenter') { |
|
|
|
|
throw new Exception('Shared base not updated properly'); |
|
|
|
|
throw new Exception('Shared base not updated properly') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Updated project shared base', async () => { |
|
|
|
|
await createSharedBase(context.app, context.token, project); |
|
|
|
|
await createSharedBase(context.app, context.token, project) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.patch(`/api/v1/db/meta/projects/${project.id}/shared`) |
|
|
|
@ -200,42 +200,42 @@ function projectTest() {
|
|
|
|
|
roles: 'editor', |
|
|
|
|
password: 'test', |
|
|
|
|
}) |
|
|
|
|
.expect(200); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
.expect(200) |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
|
|
|
|
|
if (updatedProject.roles !== 'editor') { |
|
|
|
|
throw new Exception('Shared base not updated properly'); |
|
|
|
|
throw new Exception('Shared base not updated properly') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Get project shared base', async () => { |
|
|
|
|
await createSharedBase(context.app, context.token, project); |
|
|
|
|
await createSharedBase(context.app, context.token, project) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.get(`/api/v1/db/meta/projects/${project.id}/shared`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send() |
|
|
|
|
.expect(200); |
|
|
|
|
.expect(200) |
|
|
|
|
|
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
if (!updatedProject.uuid) { |
|
|
|
|
throw new Exception('Shared base not created'); |
|
|
|
|
throw new Exception('Shared base not created') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Delete project shared base', async () => { |
|
|
|
|
await createSharedBase(context.app, context.token, project); |
|
|
|
|
await createSharedBase(context.app, context.token, project) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.delete(`/api/v1/db/meta/projects/${project.id}/shared`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send() |
|
|
|
|
.expect(200); |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id); |
|
|
|
|
.expect(200) |
|
|
|
|
const updatedProject = await Project.getByTitleOrId(project.id) |
|
|
|
|
if (updatedProject.uuid) { |
|
|
|
|
throw new Exception('Shared base not deleted'); |
|
|
|
|
throw new Exception('Shared base not deleted') |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// todo: Do compare api test
|
|
|
|
|
|
|
|
|
@ -244,16 +244,16 @@ function projectTest() {
|
|
|
|
|
.get(`/api/v1/db/meta/projects/${project.id}/meta-diff`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send() |
|
|
|
|
.expect(200); |
|
|
|
|
}); |
|
|
|
|
.expect(200) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
it('Meta diff sync', async () => { |
|
|
|
|
await request(context.app) |
|
|
|
|
.post(`/api/v1/db/meta/projects/${project.id}/meta-diff`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send() |
|
|
|
|
.expect(200); |
|
|
|
|
}); |
|
|
|
|
.expect(200) |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// todo: improve test. Check whether the all the actions are present in the response and correct as well
|
|
|
|
|
it('Meta diff sync', async () => { |
|
|
|
@ -265,13 +265,13 @@ function projectTest() {
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it.only('Get all projects meta', async () => { |
|
|
|
|
it('Get all projects meta', async () => { |
|
|
|
|
await createTable(context, project, { table_name: 'table1', title: 'table1' }) |
|
|
|
|
await createTable(context, project, { table_name: 'table2', title: 'table2' }) |
|
|
|
|
await createTable(context, project, { table_name: 'table3', title: 'table3' }) |
|
|
|
|
|
|
|
|
|
await request(context.app) |
|
|
|
|
.get(`/api/v1/all_meta`) |
|
|
|
|
.get(`/api/v1/aggregated-meta-info`) |
|
|
|
|
.set('xc-auth', context.token) |
|
|
|
|
.send({}) |
|
|
|
|
.expect(200) |
|
|
|
@ -297,6 +297,6 @@ function projectTest() {
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export default function () { |
|
|
|
|
describe('Project', projectTest); |
|
|
|
|
export default function() { |
|
|
|
|
describe('Project', projectTest) |
|
|
|
|
} |
|
|
|
|