@nocobase/plugin-acl 0.11.1-alpha.5 → 0.12.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/client.d.ts +2 -3
  2. package/client.js +1 -1
  3. package/dist/client/index.js +11 -0
  4. package/{lib/server → dist}/index.d.ts +1 -0
  5. package/dist/index.js +18 -0
  6. package/{src/server/actions/available-actions.ts → dist/server/actions/available-actions.js} +7 -5
  7. package/{src/server/actions/role-check.ts → dist/server/actions/role-check.js} +17 -22
  8. package/dist/server/actions/role-collections.js +53 -0
  9. package/dist/server/actions/user-setDefaultRole.js +43 -0
  10. package/dist/server/collections/roles-users.js +10 -0
  11. package/dist/server/collections/roles.js +103 -0
  12. package/dist/server/collections/rolesResources.js +35 -0
  13. package/dist/server/collections/rolesResourcesActions.js +33 -0
  14. package/dist/server/collections/rolesResourcesScopes.js +27 -0
  15. package/dist/server/collections/users.js +35 -0
  16. package/dist/server/index.js +11 -0
  17. package/dist/server/middlewares/setCurrentRole.js +31 -0
  18. package/dist/server/migrations/20221214072638-set-role-snippets.js +25 -0
  19. package/dist/server/model/RoleModel.js +23 -0
  20. package/dist/server/model/RoleResourceActionModel.js +64 -0
  21. package/dist/server/model/RoleResourceModel.js +55 -0
  22. package/dist/server/server.js +709 -0
  23. package/package.json +12 -21
  24. package/server.d.ts +3 -3
  25. package/server.js +1 -1
  26. package/lib/client/index.js +0 -22
  27. package/lib/index.js +0 -13
  28. package/lib/server/actions/available-actions.js +0 -34
  29. package/lib/server/actions/role-check.js +0 -77
  30. package/lib/server/actions/role-collections.js +0 -98
  31. package/lib/server/actions/user-setDefaultRole.js +0 -52
  32. package/lib/server/collections/roles-users.js +0 -16
  33. package/lib/server/collections/roles.js +0 -92
  34. package/lib/server/collections/rolesResources.js +0 -31
  35. package/lib/server/collections/rolesResourcesActions.js +0 -31
  36. package/lib/server/collections/rolesResourcesScopes.js +0 -25
  37. package/lib/server/collections/users.js +0 -41
  38. package/lib/server/index.js +0 -13
  39. package/lib/server/middlewares/setCurrentRole.js +0 -45
  40. package/lib/server/migrations/20221214072638-set-role-snippets.js +0 -43
  41. package/lib/server/model/RoleModel.js +0 -35
  42. package/lib/server/model/RoleResourceActionModel.js +0 -91
  43. package/lib/server/model/RoleResourceModel.js +0 -106
  44. package/lib/server/server.js +0 -947
  45. package/src/client/index.ts +0 -8
  46. package/src/index.ts +0 -1
  47. package/src/server/__tests__/acl.test.ts +0 -835
  48. package/src/server/__tests__/actions.test.ts +0 -141
  49. package/src/server/__tests__/association-field.test.ts +0 -413
  50. package/src/server/__tests__/configuration.test.ts +0 -70
  51. package/src/server/__tests__/list-action.test.ts +0 -446
  52. package/src/server/__tests__/middleware.test.ts +0 -210
  53. package/src/server/__tests__/own.test.ts +0 -124
  54. package/src/server/__tests__/prepare.ts +0 -20
  55. package/src/server/__tests__/role-check.test.ts +0 -46
  56. package/src/server/__tests__/role-resource.test.ts +0 -177
  57. package/src/server/__tests__/role-user.test.ts +0 -127
  58. package/src/server/__tests__/role.test.ts +0 -118
  59. package/src/server/__tests__/scope.test.ts +0 -55
  60. package/src/server/__tests__/setCurrentRole.test.ts +0 -86
  61. package/src/server/__tests__/snippets.test.ts +0 -35
  62. package/src/server/__tests__/users.test.ts +0 -136
  63. package/src/server/__tests__/write-role-to-acl.test.ts +0 -41
  64. package/src/server/actions/role-collections.ts +0 -95
  65. package/src/server/actions/user-setDefaultRole.ts +0 -47
  66. package/src/server/collections/roles-users.ts +0 -8
  67. package/src/server/collections/roles.ts +0 -101
  68. package/src/server/collections/rolesResources.ts +0 -33
  69. package/src/server/collections/rolesResourcesActions.ts +0 -31
  70. package/src/server/collections/rolesResourcesScopes.ts +0 -25
  71. package/src/server/collections/users.ts +0 -31
  72. package/src/server/index.ts +0 -1
  73. package/src/server/middlewares/setCurrentRole.ts +0 -35
  74. package/src/server/migrations/20221214072638-set-role-snippets.ts +0 -23
  75. package/src/server/model/RoleModel.ts +0 -23
  76. package/src/server/model/RoleResourceActionModel.ts +0 -95
  77. package/src/server/model/RoleResourceModel.ts +0 -74
  78. package/src/server/server.ts +0 -854
  79. /package/{lib → dist}/client/index.d.ts +0 -0
  80. /package/{lib → dist}/server/actions/available-actions.d.ts +0 -0
  81. /package/{lib → dist}/server/actions/role-check.d.ts +0 -0
  82. /package/{lib → dist}/server/actions/role-collections.d.ts +0 -0
  83. /package/{lib → dist}/server/actions/user-setDefaultRole.d.ts +0 -0
  84. /package/{lib → dist}/server/collections/roles-users.d.ts +0 -0
  85. /package/{lib → dist}/server/collections/roles.d.ts +0 -0
  86. /package/{lib → dist}/server/collections/rolesResources.d.ts +0 -0
  87. /package/{lib → dist}/server/collections/rolesResourcesActions.d.ts +0 -0
  88. /package/{lib → dist}/server/collections/rolesResourcesScopes.d.ts +0 -0
  89. /package/{lib → dist}/server/collections/users.d.ts +0 -0
  90. /package/{lib → dist/server}/index.d.ts +0 -0
  91. /package/{lib → dist}/server/middlewares/setCurrentRole.d.ts +0 -0
  92. /package/{lib → dist}/server/migrations/20221214072638-set-role-snippets.d.ts +0 -0
  93. /package/{lib → dist}/server/model/RoleModel.d.ts +0 -0
  94. /package/{lib → dist}/server/model/RoleResourceActionModel.d.ts +0 -0
  95. /package/{lib → dist}/server/model/RoleResourceModel.d.ts +0 -0
  96. /package/{lib → dist}/server/server.d.ts +0 -0
@@ -1,124 +0,0 @@
1
- import { ACL } from '@nocobase/acl';
2
- import { Database } from '@nocobase/database';
3
- import PluginUser from '@nocobase/plugin-users';
4
- import { MockServer } from '@nocobase/test';
5
- import { prepareApp } from './prepare';
6
-
7
- describe('own test', () => {
8
- let app: MockServer;
9
- let db: Database;
10
- let acl: ACL;
11
-
12
- let pluginUser: PluginUser;
13
- let adminToken: string;
14
- let userToken: string;
15
-
16
- let admin;
17
- let user;
18
-
19
- let role;
20
- let agent;
21
- let adminAgent;
22
- let userAgent;
23
-
24
- afterEach(async () => {
25
- await app.destroy();
26
- });
27
-
28
- beforeEach(async () => {
29
- app = await prepareApp();
30
- db = app.db;
31
-
32
- const PostCollection = db.collection({
33
- name: 'posts',
34
- fields: [
35
- { type: 'string', name: 'title' },
36
- { type: 'belongsToMany', name: 'tags' },
37
- ],
38
- createdBy: true,
39
- });
40
-
41
- const TagCollection = db.collection({
42
- name: 'tags',
43
- fields: [
44
- { type: 'string', name: 'name' },
45
- { type: 'belongsToMany', name: 'posts' },
46
- ],
47
- createdBy: true,
48
- });
49
-
50
- const TestCollection = db.collection({
51
- name: 'tests',
52
- fields: [{ type: 'string', name: 'name' }],
53
- });
54
-
55
- await db.sync();
56
-
57
- agent = app.agent();
58
-
59
- acl = app.acl;
60
-
61
- role = await db.getRepository('roles').findOne({
62
- filter: {
63
- name: 'admin',
64
- },
65
- });
66
-
67
- admin = await db.getRepository('users').findOne();
68
-
69
- pluginUser = app.getPlugin('users');
70
-
71
- adminAgent = app.agent().login(admin);
72
-
73
- user = await db.getRepository('users').create({
74
- values: {
75
- nickname: 'test',
76
- roles: ['admin'],
77
- },
78
- });
79
-
80
- userAgent = app.agent().login(user);
81
- });
82
-
83
- it('should list without createBy', async () => {
84
- await adminAgent
85
- .patch('/roles/admin')
86
- .send({
87
- strategy: {
88
- actions: ['view:own'],
89
- },
90
- })
91
- .set({ Authorization: 'Bearer ' + adminToken });
92
-
93
- const response = await userAgent.get('/tests:list');
94
- expect(response.statusCode).toEqual(200);
95
- });
96
-
97
- it('should delete with createdBy', async () => {
98
- await adminAgent.resource('roles').update({
99
- filterByTk: 'admin',
100
- values: {
101
- strategy: {
102
- actions: ['view:own', 'create', 'destroy:own'],
103
- },
104
- },
105
- });
106
-
107
- let response = await userAgent.resource('posts').create({
108
- values: {
109
- title: 't1',
110
- },
111
- });
112
-
113
- expect(response.statusCode).toEqual(200);
114
-
115
- const data = response.body;
116
- const id = data.data['id'];
117
-
118
- response = await userAgent.resource('posts').destroy({
119
- filterByTk: id,
120
- });
121
- expect(response.statusCode).toEqual(200);
122
- expect(await db.getRepository('posts').count()).toEqual(0);
123
- });
124
- });
@@ -1,20 +0,0 @@
1
- import { mockServer, MockServer } from '@nocobase/test';
2
- import PluginACL from '../../server';
3
-
4
- export async function prepareApp(): Promise<MockServer> {
5
- const app = mockServer({
6
- registerActions: true,
7
- acl: true,
8
- plugins: ['error-handler', 'users', 'ui-schema-storage', 'collection-manager', 'auth'],
9
- });
10
-
11
- app.plugin(PluginACL, {
12
- name: 'acl',
13
- });
14
-
15
- await app.loadAndInstall({ clean: true });
16
-
17
- await app.db.sync();
18
-
19
- return app;
20
- }
@@ -1,46 +0,0 @@
1
- import { Database } from '@nocobase/database';
2
- import UsersPlugin from '@nocobase/plugin-users';
3
- import { MockServer } from '@nocobase/test';
4
- import { prepareApp } from './prepare';
5
-
6
- describe('role check action', () => {
7
- let app: MockServer;
8
- let db: Database;
9
-
10
- beforeEach(async () => {
11
- app = await prepareApp();
12
- db = app.db;
13
- });
14
-
15
- afterEach(async () => {
16
- await app.destroy();
17
- });
18
-
19
- it('should return role info', async () => {
20
- const role = await db.getRepository('roles').create({
21
- values: {
22
- name: 'test',
23
- },
24
- });
25
-
26
- await role.createMenuUiSchema({
27
- values: {
28
- name: 'test',
29
- },
30
- });
31
-
32
- const user = await db.getRepository('users').create({
33
- values: {
34
- roles: ['test'],
35
- },
36
- });
37
-
38
- const userPlugin = app.getPlugin('users') as UsersPlugin;
39
- const agent = app.agent().login(user);
40
-
41
- // @ts-ignore
42
- const response = await agent.resource('roles').check();
43
-
44
- expect(response.statusCode).toEqual(200);
45
- });
46
- });
@@ -1,177 +0,0 @@
1
- import { Database, Model } from '@nocobase/database';
2
- import { CollectionRepository } from '@nocobase/plugin-collection-manager';
3
- import UsersPlugin from '@nocobase/plugin-users';
4
- import { MockServer } from '@nocobase/test';
5
- import { prepareApp } from './prepare';
6
-
7
- describe('role resource api', () => {
8
- let app: MockServer;
9
- let db: Database;
10
- let role: Model;
11
- let admin;
12
- let adminAgent;
13
-
14
- afterEach(async () => {
15
- await app.destroy();
16
- });
17
-
18
- beforeEach(async () => {
19
- app = await prepareApp();
20
- db = app.db;
21
-
22
- role = await db.getRepository('roles').findOne({
23
- filter: {
24
- name: 'admin',
25
- },
26
- });
27
-
28
- const UserRepo = db.getCollection('users').repository;
29
- admin = await UserRepo.create({
30
- values: {
31
- roles: ['admin'],
32
- },
33
- });
34
-
35
- const userPlugin = app.getPlugin('users') as UsersPlugin;
36
- adminAgent = app.agent().login(admin);
37
- });
38
-
39
- it('should grant resource by createRepository', async () => {
40
- const collectionManager = db.getRepository('collections') as CollectionRepository;
41
- await collectionManager.create({
42
- values: {
43
- name: 'c1',
44
- title: 'table1',
45
- },
46
- context: {},
47
- });
48
-
49
- await collectionManager.create({
50
- values: {
51
- name: 'c2',
52
- title: 'table2',
53
- },
54
- context: {},
55
- });
56
-
57
- await db.getRepository('roles').create({
58
- values: {
59
- name: 'testRole',
60
- resources: [
61
- {
62
- name: 'c1',
63
- actions: [
64
- {
65
- name: 'create',
66
- },
67
- ],
68
- },
69
- ],
70
- },
71
- });
72
-
73
- const acl = app.acl;
74
- const testRole = acl.getRole('testRole');
75
- const resource = testRole.getResource('c1');
76
- expect(resource).toBeDefined();
77
- });
78
-
79
- it('should grant resource action', async () => {
80
- const collectionManager = db.getRepository('collections') as CollectionRepository;
81
-
82
- await collectionManager.create({
83
- values: {
84
- name: 'c1',
85
- title: 'table1',
86
- },
87
- context: {},
88
- });
89
-
90
- await collectionManager.create({
91
- values: {
92
- name: 'c2',
93
- title: 'table2',
94
- },
95
- context: {},
96
- });
97
-
98
- // get collections list
99
- let response = await adminAgent.resource('roles.collections', 'admin').list({
100
- filter: {
101
- $or: [{ name: 'c1' }, { name: 'c2' }],
102
- },
103
- sort: ['sort'],
104
- });
105
-
106
- expect(response.statusCode).toEqual(200);
107
-
108
- expect(response.body.data).toMatchObject([
109
- {
110
- name: 'c1',
111
- title: 'table1',
112
- usingConfig: 'strategy',
113
- exists: false,
114
- },
115
- {
116
- name: 'c2',
117
- title: 'table2',
118
- usingConfig: 'strategy',
119
- exists: false,
120
- },
121
- ]);
122
-
123
- // set resource actions
124
- response = await adminAgent.resource('roles.resources', 'admin').create({
125
- values: {
126
- name: 'c1',
127
- usingActionsConfig: true,
128
- actions: [
129
- {
130
- name: 'create',
131
- },
132
- ],
133
- },
134
- });
135
-
136
- expect(response.statusCode).toEqual(200);
137
-
138
- // get collections list
139
- response = await adminAgent.resource('roles.collections').list({
140
- associatedIndex: role.get('name') as string,
141
- filter: {
142
- name: 'c1',
143
- },
144
- });
145
-
146
- expect(response.body.data[0]['usingConfig']).toEqual('resourceAction');
147
-
148
- response = await adminAgent.resource('roles.resources').list({
149
- associatedIndex: role.get('name') as string,
150
- appends: 'actions',
151
- });
152
-
153
- expect(response.statusCode).toEqual(200);
154
- const resources = response.body.data;
155
- const resourceAction = resources[0]['actions'][0];
156
-
157
- expect(resourceAction['name']).toEqual('create');
158
-
159
- // update resource actions
160
- response = await adminAgent.resource('roles.resources').update({
161
- associatedIndex: role.get('name') as string,
162
- values: {
163
- name: 'c1',
164
- usingActionsConfig: true,
165
- actions: [
166
- {
167
- name: 'view',
168
- },
169
- ],
170
- },
171
- });
172
-
173
- expect(response.statusCode).toEqual(200);
174
- expect(response.body.data[0]['actions'].length).toEqual(1);
175
- expect(response.body.data[0]['actions'][0]['name']).toEqual('view');
176
- });
177
- });
@@ -1,127 +0,0 @@
1
- import Database, { BelongsToManyRepository } from '@nocobase/database';
2
- import AuthPlugin from '@nocobase/plugin-auth';
3
- import UsersPlugin from '@nocobase/plugin-users';
4
- import { MockServer, mockServer } from '@nocobase/test';
5
- import jwt from 'jsonwebtoken';
6
- import PluginACL from '../index';
7
-
8
- describe('role', () => {
9
- let api: MockServer;
10
- let db: Database;
11
-
12
- let usersPlugin: UsersPlugin;
13
-
14
- beforeEach(async () => {
15
- api = mockServer();
16
- await api.cleanDb();
17
- api.plugin(UsersPlugin, { name: 'users' });
18
- api.plugin(PluginACL, { name: 'acl' });
19
- api.plugin(AuthPlugin, { name: 'auth' });
20
- await api.loadAndInstall();
21
-
22
- db = api.db;
23
- usersPlugin = api.getPlugin('users');
24
- });
25
-
26
- afterEach(async () => {
27
- await api.destroy();
28
- });
29
-
30
- it('should set default role', async () => {
31
- await db.getRepository('roles').create({
32
- values: {
33
- name: 'test1',
34
- title: 'Admin User',
35
- allowConfigure: true,
36
- default: true,
37
- },
38
- });
39
-
40
- const user = await db.getRepository('users').create({});
41
-
42
- // @ts-ignore
43
- const roles = await user.getRoles();
44
-
45
- expect(roles.length).toEqual(1);
46
- expect(roles[0].get('name')).toEqual('test1');
47
- });
48
-
49
- it('should not add role when user has role', async () => {
50
- await db.getRepository('roles').create({
51
- values: {
52
- name: 'test1',
53
- default: true,
54
- },
55
- });
56
-
57
- await db.getRepository('roles').create({
58
- values: {
59
- name: 'test2',
60
- },
61
- });
62
-
63
- const user = await db.getRepository('users').create({
64
- values: {
65
- roles: [
66
- {
67
- name: 'test2',
68
- },
69
- ],
70
- },
71
- });
72
-
73
- // @ts-ignore
74
- const roles = await user.getRoles();
75
-
76
- expect(roles.length).toEqual(1);
77
- expect(roles[0].get('name')).toEqual('test2');
78
- });
79
-
80
- it('should set users default role', async () => {
81
- await db.getRepository('roles').create({
82
- values: {
83
- name: 'test1',
84
- title: 'Admin User',
85
- allowConfigure: true,
86
- default: true,
87
- },
88
- });
89
-
90
- await db.getRepository('roles').create({
91
- values: {
92
- name: 'test2',
93
- title: 'test2 user',
94
- allowConfigure: true,
95
- },
96
- });
97
-
98
- const user = await db.getRepository('users').create({
99
- values: {
100
- token: '123',
101
- },
102
- });
103
-
104
- const userRolesRepo = db.getRepository<BelongsToManyRepository>('users.roles', user.get('id') as string);
105
- await userRolesRepo.add('test1');
106
- await userRolesRepo.add('test2');
107
-
108
- const userToken = jwt.sign({ userId: user.get('id') }, 'test-key');
109
- const response = await api
110
- .agent()
111
- .post('/users:setDefaultRole')
112
- .send({
113
- roleName: 'test2',
114
- })
115
- .set({
116
- Authorization: `Bearer ${userToken}`,
117
- 'X-Authenticator': 'basic',
118
- });
119
-
120
- expect(response.statusCode).toEqual(200);
121
-
122
- const userRoles = await userRolesRepo.find();
123
- const defaultRole = userRoles.find((userRole) => userRole.get('rolesUsers').default);
124
-
125
- expect(defaultRole['name']).toEqual('test2');
126
- });
127
- });
@@ -1,118 +0,0 @@
1
- import { ArrayFieldRepository, Database, Model } from '@nocobase/database';
2
- import UsersPlugin from '@nocobase/plugin-users';
3
- import { MockServer } from '@nocobase/test';
4
- import { prepareApp } from './prepare';
5
-
6
- describe('role api', () => {
7
- let app: MockServer;
8
- let db: Database;
9
-
10
- afterEach(async () => {
11
- await app.destroy();
12
- });
13
-
14
- beforeEach(async () => {
15
- app = await prepareApp();
16
- db = app.db;
17
- });
18
-
19
- describe('grant', () => {
20
- let role: Model;
21
- let admin: Model;
22
- let adminAgent;
23
-
24
- beforeEach(async () => {
25
- role = await db.getRepository('roles').findOne({
26
- filter: {
27
- name: 'admin',
28
- },
29
- });
30
-
31
- const UserRepo = db.getCollection('users').repository;
32
- admin = await UserRepo.create({
33
- values: {
34
- roles: ['admin'],
35
- },
36
- });
37
-
38
- const userPlugin = app.getPlugin('users') as UsersPlugin;
39
- adminAgent = app.agent().login(admin);
40
- });
41
-
42
- it('should list actions', async () => {
43
- const response = await adminAgent.resource('availableActions').list();
44
- expect(response.statusCode).toEqual(200);
45
- });
46
-
47
- it('should grant universal role actions', async () => {
48
- // grant role actions
49
- const response = await adminAgent.resource('roles').update({
50
- forceUpdate: true,
51
- values: {
52
- strategy: {
53
- actions: ['create:all', 'view:own'],
54
- },
55
- },
56
- });
57
-
58
- expect(response.statusCode).toEqual(200);
59
-
60
- await role.reload();
61
-
62
- expect(role.get('strategy')).toMatchObject({
63
- actions: ['create:all', 'view:own'],
64
- });
65
- });
66
- });
67
-
68
- it('should works with default option', async () => {
69
- await db.getRepository('roles').create({
70
- values: {
71
- name: 'role1',
72
- title: 'admin 1',
73
- default: true,
74
- },
75
- });
76
-
77
- await db.getRepository('roles').create({
78
- values: {
79
- name: 'role2',
80
- default: true,
81
- },
82
- });
83
-
84
- const defaultRole = await db.getRepository('roles').find({
85
- filter: {
86
- default: true,
87
- },
88
- });
89
-
90
- expect(defaultRole.length).toEqual(1);
91
- expect(defaultRole[0].get('name')).toEqual('role2');
92
- });
93
-
94
- it('should sync snippet patterns', async () => {
95
- app.acl.registerSnippet({
96
- name: 'collections',
97
- actions: ['collection:*'],
98
- });
99
-
100
- await db.getRepository('roles').create({
101
- values: {
102
- name: 'role1',
103
- },
104
- });
105
-
106
- await db.getRepository<ArrayFieldRepository>('roles.snippets', 'role1').set({
107
- values: ['collections'],
108
- });
109
-
110
- const role1Instance = await db.getRepository('roles').findOne({
111
- filterByTk: 'role1',
112
- });
113
-
114
- const role1 = app.acl.getRole('role1');
115
-
116
- expect(role1.toJSON()['snippets']).toEqual(['collections']);
117
- });
118
- });
@@ -1,55 +0,0 @@
1
- import { Database } from '@nocobase/database';
2
- import UsersPlugin from '@nocobase/plugin-users';
3
- import { MockServer } from '@nocobase/test';
4
- import { prepareApp } from './prepare';
5
-
6
- describe('scope api', () => {
7
- let app: MockServer;
8
- let db: Database;
9
-
10
- let admin;
11
- let adminAgent;
12
-
13
- afterEach(async () => {
14
- await app.destroy();
15
- });
16
-
17
- beforeEach(async () => {
18
- app = await prepareApp();
19
- db = app.db;
20
-
21
- const UserRepo = db.getCollection('users').repository;
22
- admin = await UserRepo.create({
23
- values: {
24
- roles: ['admin'],
25
- },
26
- });
27
-
28
- const userPlugin = app.getPlugin('users') as UsersPlugin;
29
- adminAgent = app.agent().login(admin);
30
- });
31
-
32
- it('should create scope of resource', async () => {
33
- const response = await adminAgent.resource('rolesResourcesScopes').create({
34
- values: {
35
- resourceName: 'posts',
36
- name: 'published posts',
37
- scope: {
38
- published: true,
39
- },
40
- },
41
- });
42
-
43
- expect(response.statusCode).toEqual(200);
44
-
45
- const scope = await db.getRepository('rolesResourcesScopes').findOne({
46
- filter: {
47
- name: 'published posts',
48
- },
49
- });
50
-
51
- expect(scope.get('scope')).toMatchObject({
52
- published: true,
53
- });
54
- });
55
- });