Merge branch 'develop' into BUDI-7393/use_permissions_on_middleware
This commit is contained in:
commit
111e999962
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "2.9.33-alpha.12",
|
"version": "2.9.33-alpha.13",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"packages": [
|
"packages": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
|
|
|
@ -87,6 +87,7 @@ export const BUILTIN_PERMISSIONS = {
|
||||||
new Permission(PermissionType.QUERY, PermissionLevel.WRITE),
|
new Permission(PermissionType.QUERY, PermissionLevel.WRITE),
|
||||||
new Permission(PermissionType.TABLE, PermissionLevel.WRITE),
|
new Permission(PermissionType.TABLE, PermissionLevel.WRITE),
|
||||||
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
|
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
|
||||||
|
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
POWER: {
|
POWER: {
|
||||||
|
@ -97,6 +98,7 @@ export const BUILTIN_PERMISSIONS = {
|
||||||
new Permission(PermissionType.USER, PermissionLevel.READ),
|
new Permission(PermissionType.USER, PermissionLevel.READ),
|
||||||
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
|
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
|
||||||
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
|
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
|
||||||
|
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
ADMIN: {
|
ADMIN: {
|
||||||
|
@ -108,6 +110,7 @@ export const BUILTIN_PERMISSIONS = {
|
||||||
new Permission(PermissionType.AUTOMATION, PermissionLevel.ADMIN),
|
new Permission(PermissionType.AUTOMATION, PermissionLevel.ADMIN),
|
||||||
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
|
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
|
||||||
new Permission(PermissionType.QUERY, PermissionLevel.ADMIN),
|
new Permission(PermissionType.QUERY, PermissionLevel.ADMIN),
|
||||||
|
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,4 +270,21 @@ describe("/permission", () => {
|
||||||
expect(publicPerm.name).toBeDefined()
|
expect(publicPerm.name).toBeDefined()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("default permissions", () => {
|
||||||
|
it("legacy views", async () => {
|
||||||
|
const legacyView = await config.createLegacyView()
|
||||||
|
|
||||||
|
const res = await config.api.permission.get(legacyView.name)
|
||||||
|
|
||||||
|
expect(res.body).toEqual({
|
||||||
|
permissions: {
|
||||||
|
read: {
|
||||||
|
permissionType: "BASE",
|
||||||
|
role: "BASIC",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -673,7 +673,7 @@ describe("/rows", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should be able to run on a view", async () => {
|
it("should be able to run on a view", async () => {
|
||||||
const view = await config.createView()
|
const view = await config.createLegacyView()
|
||||||
const row = await config.createRow()
|
const row = await config.createRow()
|
||||||
const rowUsage = await getRowUsage()
|
const rowUsage = await getRowUsage()
|
||||||
const queryUsage = await getQueryUsage()
|
const queryUsage = await getQueryUsage()
|
||||||
|
|
|
@ -87,7 +87,7 @@ describe("/tables", () => {
|
||||||
|
|
||||||
it("updates all the row fields for a table when a schema key is renamed", async () => {
|
it("updates all the row fields for a table when a schema key is renamed", async () => {
|
||||||
const testTable = await config.createTable()
|
const testTable = await config.createTable()
|
||||||
await config.createView({
|
await config.createLegacyView({
|
||||||
name: "TestView",
|
name: "TestView",
|
||||||
field: "Price",
|
field: "Price",
|
||||||
calculation: "stats",
|
calculation: "stats",
|
||||||
|
@ -254,7 +254,7 @@ describe("/tables", () => {
|
||||||
}))
|
}))
|
||||||
|
|
||||||
await config.api.viewV2.create({ tableId })
|
await config.api.viewV2.create({ tableId })
|
||||||
await config.createView({ tableId, name: generator.guid() })
|
await config.createLegacyView({ tableId, name: generator.guid() })
|
||||||
|
|
||||||
const res = await config.api.table.fetch()
|
const res = await config.api.table.fetch()
|
||||||
|
|
||||||
|
|
|
@ -249,7 +249,7 @@ describe("/views", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("returns only custom views", async () => {
|
it("returns only custom views", async () => {
|
||||||
await config.createView({
|
await config.createLegacyView({
|
||||||
name: "TestView",
|
name: "TestView",
|
||||||
field: "Price",
|
field: "Price",
|
||||||
calculation: "stats",
|
calculation: "stats",
|
||||||
|
@ -267,7 +267,7 @@ describe("/views", () => {
|
||||||
|
|
||||||
describe("query", () => {
|
describe("query", () => {
|
||||||
it("returns data for the created view", async () => {
|
it("returns data for the created view", async () => {
|
||||||
await config.createView({
|
await config.createLegacyView({
|
||||||
name: "TestView",
|
name: "TestView",
|
||||||
field: "Price",
|
field: "Price",
|
||||||
calculation: "stats",
|
calculation: "stats",
|
||||||
|
@ -295,7 +295,7 @@ describe("/views", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("returns data for the created view using a group by", async () => {
|
it("returns data for the created view using a group by", async () => {
|
||||||
await config.createView({
|
await config.createLegacyView({
|
||||||
calculation: "stats",
|
calculation: "stats",
|
||||||
name: "TestView",
|
name: "TestView",
|
||||||
field: "Price",
|
field: "Price",
|
||||||
|
@ -331,7 +331,7 @@ describe("/views", () => {
|
||||||
describe("destroy", () => {
|
describe("destroy", () => {
|
||||||
it("should be able to delete a view", async () => {
|
it("should be able to delete a view", async () => {
|
||||||
const table = await config.createTable(priceTable())
|
const table = await config.createTable(priceTable())
|
||||||
const view = await config.createView()
|
const view = await config.createLegacyView()
|
||||||
const res = await request
|
const res = await request
|
||||||
.delete(`/api/views/${view.name}`)
|
.delete(`/api/views/${view.name}`)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
|
@ -395,7 +395,7 @@ describe("/views", () => {
|
||||||
|
|
||||||
it("should be able to export a view as JSON", async () => {
|
it("should be able to export a view as JSON", async () => {
|
||||||
let table = await setupExport()
|
let table = await setupExport()
|
||||||
const view = await config.createView()
|
const view = await config.createLegacyView()
|
||||||
table = await config.getTable(table._id)
|
table = await config.getTable(table._id)
|
||||||
|
|
||||||
let res = await exportView(view.name, "json")
|
let res = await exportView(view.name, "json")
|
||||||
|
@ -407,7 +407,7 @@ describe("/views", () => {
|
||||||
|
|
||||||
it("should be able to export a view as CSV", async () => {
|
it("should be able to export a view as CSV", async () => {
|
||||||
let table = await setupExport()
|
let table = await setupExport()
|
||||||
const view = await config.createView()
|
const view = await config.createLegacyView()
|
||||||
table = await config.getTable(table._id)
|
table = await config.getTable(table._id)
|
||||||
|
|
||||||
let res = await exportView(view.name, "csv")
|
let res = await exportView(view.name, "csv")
|
||||||
|
|
|
@ -296,7 +296,7 @@ describe.each([
|
||||||
})
|
})
|
||||||
|
|
||||||
it("cannot update views v1", async () => {
|
it("cannot update views v1", async () => {
|
||||||
const viewV1 = await config.createView()
|
const viewV1 = await config.createLegacyView()
|
||||||
await config.api.viewV2.update(
|
await config.api.viewV2.update(
|
||||||
{
|
{
|
||||||
...viewV1,
|
...viewV1,
|
||||||
|
|
|
@ -50,9 +50,9 @@ describe("migrations", () => {
|
||||||
await config.createRole()
|
await config.createRole()
|
||||||
await config.createRole()
|
await config.createRole()
|
||||||
await config.createTable()
|
await config.createTable()
|
||||||
await config.createView()
|
await config.createLegacyView()
|
||||||
await config.createTable()
|
await config.createTable()
|
||||||
await config.createView(structures.view(config.table!._id!))
|
await config.createLegacyView(structures.view(config.table!._id!))
|
||||||
await config.createScreen()
|
await config.createScreen()
|
||||||
await config.createScreen()
|
await config.createScreen()
|
||||||
|
|
||||||
|
|
|
@ -622,7 +622,7 @@ class TestConfiguration {
|
||||||
|
|
||||||
// VIEW
|
// VIEW
|
||||||
|
|
||||||
async createView(config?: any) {
|
async createLegacyView(config?: any) {
|
||||||
if (!this.table) {
|
if (!this.table) {
|
||||||
throw "Test requires table to be configured."
|
throw "Test requires table to be configured."
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ export function getPermissionType(resourceId: string) {
|
||||||
case DocumentType.QUERY:
|
case DocumentType.QUERY:
|
||||||
case DocumentType.DATASOURCE:
|
case DocumentType.DATASOURCE:
|
||||||
return permissions.PermissionType.QUERY
|
return permissions.PermissionType.QUERY
|
||||||
|
default:
|
||||||
|
// legacy views don't have an ID, will end up here
|
||||||
|
return permissions.PermissionType.LEGACY_VIEW
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ export enum PermissionType {
|
||||||
GLOBAL_BUILDER = "globalBuilder",
|
GLOBAL_BUILDER = "globalBuilder",
|
||||||
QUERY = "query",
|
QUERY = "query",
|
||||||
VIEW = "view",
|
VIEW = "view",
|
||||||
|
LEGACY_VIEW = "legacy_view",
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum PermissionSource {
|
export enum PermissionSource {
|
||||||
|
|
Loading…
Reference in New Issue