@appsemble/cli 0.27.12 → 0.28.0
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.
- package/README.md +3 -3
- package/commands/app/delete.js +2 -10
- package/commands/app/export.js +2 -3
- package/commands/block/delete.js +2 -3
- package/commands/team/create.js +1 -2
- package/commands/team/delete.js +1 -2
- package/lib/app.d.ts +8 -1
- package/lib/app.js +21 -4
- package/lib/app.test.js +495 -23
- package/lib/asset.test.d.ts +1 -0
- package/lib/asset.test.js +101 -0
- package/lib/block.d.ts +2 -1
- package/lib/block.js +3 -2
- package/lib/block.test.js +52 -1
- package/lib/organization.js +5 -3
- package/lib/organization.test.d.ts +1 -0
- package/lib/organization.test.js +222 -0
- package/lib/resource.test.d.ts +1 -0
- package/lib/resource.test.js +391 -0
- package/lib/team.d.ts +6 -2
- package/lib/team.js +6 -4
- package/lib/team.test.d.ts +1 -0
- package/lib/team.test.js +606 -0
- package/lib/testUtils.d.ts +2 -0
- package/lib/testUtils.js +11 -0
- package/package.json +6 -6
- package/server/options/parseQuery.test.js +2 -0
- package/templates/apps/empty/app-definition.yaml +2 -2
- package/templates/blocks/mini-jsx/package.json +1 -1
- package/templates/blocks/preact/package.json +2 -2
- package/templates/blocks/vanilla/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { resolveFixture } from '@appsemble/node-utils';
|
|
2
|
+
import { createServer, createTestUser, models, setArgv, useTestDatabase } from '@appsemble/server';
|
|
3
|
+
import { setTestApp } from 'axios-test-instance';
|
|
4
|
+
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
import { publishAsset } from './asset.js';
|
|
6
|
+
import { initAxios } from './initAxios.js';
|
|
7
|
+
import { authorizeCLI } from './testUtils.js';
|
|
8
|
+
const argv = { host: 'http://localhost', secret: 'test', aesSecret: 'testSecret' };
|
|
9
|
+
let user;
|
|
10
|
+
let organization;
|
|
11
|
+
let testApp;
|
|
12
|
+
const { App, Asset, Organization, OrganizationMember } = models;
|
|
13
|
+
useTestDatabase(import.meta);
|
|
14
|
+
beforeAll(() => {
|
|
15
|
+
vi.useFakeTimers();
|
|
16
|
+
setArgv(argv);
|
|
17
|
+
});
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
vi.clearAllTimers();
|
|
20
|
+
vi.setSystemTime(0);
|
|
21
|
+
const server = await createServer();
|
|
22
|
+
testApp = await setTestApp(server);
|
|
23
|
+
initAxios({ remote: testApp.defaults.baseURL });
|
|
24
|
+
user = await createTestUser();
|
|
25
|
+
organization = await Organization.create({
|
|
26
|
+
id: 'testorganization',
|
|
27
|
+
name: 'Test Organization',
|
|
28
|
+
});
|
|
29
|
+
await OrganizationMember.create({
|
|
30
|
+
OrganizationId: organization.id,
|
|
31
|
+
UserId: user.id,
|
|
32
|
+
role: 'Owner',
|
|
33
|
+
});
|
|
34
|
+
await Organization.create({ id: 'appsemble', name: 'Appsemble' });
|
|
35
|
+
});
|
|
36
|
+
afterAll(() => {
|
|
37
|
+
vi.useRealTimers();
|
|
38
|
+
});
|
|
39
|
+
describe('publishAsset', () => {
|
|
40
|
+
it('should publish an asset from a file', async () => {
|
|
41
|
+
const app = await App.create({
|
|
42
|
+
path: 'test-app',
|
|
43
|
+
definition: { name: 'Test App', defaultPage: 'Test Page' },
|
|
44
|
+
vapidPublicKey: 'a',
|
|
45
|
+
vapidPrivateKey: 'b',
|
|
46
|
+
visibility: 'public',
|
|
47
|
+
OrganizationId: organization.id,
|
|
48
|
+
});
|
|
49
|
+
await authorizeCLI('assets:write', testApp);
|
|
50
|
+
await publishAsset({
|
|
51
|
+
appId: app.id,
|
|
52
|
+
clonable: false,
|
|
53
|
+
name: 'test',
|
|
54
|
+
path: resolveFixture('apps/tux.png'),
|
|
55
|
+
remote: testApp.defaults.baseURL,
|
|
56
|
+
seed: false,
|
|
57
|
+
});
|
|
58
|
+
const asset = await Asset.findOne();
|
|
59
|
+
expect(asset.dataValues).toMatchInlineSnapshot({
|
|
60
|
+
id: expect.any(String),
|
|
61
|
+
data: expect.any(Buffer),
|
|
62
|
+
}, `
|
|
63
|
+
{
|
|
64
|
+
"AppId": 1,
|
|
65
|
+
"AppMemberId": null,
|
|
66
|
+
"ResourceId": null,
|
|
67
|
+
"clonable": false,
|
|
68
|
+
"created": 1970-01-01T00:00:00.000Z,
|
|
69
|
+
"data": Any<Buffer>,
|
|
70
|
+
"ephemeral": false,
|
|
71
|
+
"filename": "tux.png",
|
|
72
|
+
"id": Any<String>,
|
|
73
|
+
"mime": "image/png",
|
|
74
|
+
"name": "test",
|
|
75
|
+
"seed": false,
|
|
76
|
+
"updated": 1970-01-01T00:00:00.000Z,
|
|
77
|
+
}
|
|
78
|
+
`);
|
|
79
|
+
});
|
|
80
|
+
it('should throw an error if the app does not exist', async () => {
|
|
81
|
+
const app = await App.create({
|
|
82
|
+
path: 'test-app',
|
|
83
|
+
definition: { name: 'Test App', defaultPage: 'Test Page' },
|
|
84
|
+
vapidPublicKey: 'a',
|
|
85
|
+
vapidPrivateKey: 'b',
|
|
86
|
+
visibility: 'public',
|
|
87
|
+
OrganizationId: organization.id,
|
|
88
|
+
});
|
|
89
|
+
await app.destroy();
|
|
90
|
+
await authorizeCLI('assets:write', testApp);
|
|
91
|
+
await expect(() => publishAsset({
|
|
92
|
+
appId: app.id,
|
|
93
|
+
clonable: false,
|
|
94
|
+
name: 'test',
|
|
95
|
+
path: resolveFixture('apps/tux.png'),
|
|
96
|
+
remote: testApp.defaults.baseURL,
|
|
97
|
+
seed: false,
|
|
98
|
+
})).rejects.toThrow('Request failed with status code 404');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=asset.test.js.map
|
package/lib/block.d.ts
CHANGED
|
@@ -18,8 +18,9 @@ interface DeleteBlockVersionParams {
|
|
|
18
18
|
blockName: string;
|
|
19
19
|
blockVersion: string;
|
|
20
20
|
remote: string;
|
|
21
|
+
clientCredentials?: string;
|
|
21
22
|
}
|
|
22
|
-
export declare function deleteBlock({ blockName, blockVersion, organization, remote, }: DeleteBlockVersionParams): Promise<void>;
|
|
23
|
+
export declare function deleteBlock({ blockName, blockVersion, clientCredentials, organization, remote, }: DeleteBlockVersionParams): Promise<void>;
|
|
23
24
|
/**
|
|
24
25
|
* Uploads an app block theme
|
|
25
26
|
*
|
package/lib/block.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { mkdir, readdir, rm } from 'node:fs/promises';
|
|
3
3
|
import { basename, join } from 'node:path';
|
|
4
|
-
import { AppsembleError, logger, opendirSafe, readData, writeData } from '@appsemble/node-utils';
|
|
4
|
+
import { AppsembleError, authenticate, logger, opendirSafe, readData, writeData, } from '@appsemble/node-utils';
|
|
5
5
|
import { compareStrings } from '@appsemble/utils';
|
|
6
6
|
import axios from 'axios';
|
|
7
7
|
import webpack from 'webpack';
|
|
@@ -48,7 +48,8 @@ export async function buildBlock(buildConfig, env) {
|
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
-
export async function deleteBlock({ blockName, blockVersion, organization, remote, }) {
|
|
51
|
+
export async function deleteBlock({ blockName, blockVersion, clientCredentials, organization, remote, }) {
|
|
52
|
+
await authenticate(remote, 'blocks:delete', clientCredentials);
|
|
52
53
|
await axios.delete(`/api/blocks/@${organization}/${blockName}/versions/${blockVersion}`, {
|
|
53
54
|
baseURL: remote,
|
|
54
55
|
});
|
package/lib/block.test.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { resolveFixture } from '@appsemble/node-utils';
|
|
2
|
+
import { createServer, createTestUser, models, setArgv, useTestDatabase } from '@appsemble/server';
|
|
3
|
+
import { setTestApp } from 'axios-test-instance';
|
|
2
4
|
import concat from 'concat-stream';
|
|
3
|
-
import { describe, expect, it } from 'vitest';
|
|
5
|
+
import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
6
|
+
import { deleteBlock } from './block.js';
|
|
7
|
+
import { initAxios } from './initAxios.js';
|
|
4
8
|
import { makeProjectPayload } from './project.js';
|
|
9
|
+
import { authorizeCLI } from './testUtils.js';
|
|
10
|
+
useTestDatabase(import.meta);
|
|
11
|
+
const argv = { host: 'http://localhost', secret: 'test', aesSecret: 'testSecret' };
|
|
12
|
+
let testApp;
|
|
13
|
+
const { BlockVersion, Organization, OrganizationMember } = models;
|
|
5
14
|
describe('makeProjectPayload', () => {
|
|
6
15
|
it('should create a form-data payload', async () => {
|
|
7
16
|
const payload = await makeProjectPayload({
|
|
@@ -95,4 +104,46 @@ export const string = 'with-icon';
|
|
|
95
104
|
`);
|
|
96
105
|
});
|
|
97
106
|
});
|
|
107
|
+
describe('deleteBlock', () => {
|
|
108
|
+
let user;
|
|
109
|
+
let organization;
|
|
110
|
+
beforeAll(() => {
|
|
111
|
+
vi.useFakeTimers();
|
|
112
|
+
setArgv(argv);
|
|
113
|
+
});
|
|
114
|
+
beforeEach(async () => {
|
|
115
|
+
vi.clearAllTimers();
|
|
116
|
+
vi.setSystemTime(0);
|
|
117
|
+
const server = await createServer();
|
|
118
|
+
testApp = await setTestApp(server);
|
|
119
|
+
initAxios({ remote: testApp.defaults.baseURL });
|
|
120
|
+
user = await createTestUser();
|
|
121
|
+
organization = await Organization.create({
|
|
122
|
+
id: 'testorganization',
|
|
123
|
+
name: 'Test Organization',
|
|
124
|
+
});
|
|
125
|
+
await OrganizationMember.create({
|
|
126
|
+
OrganizationId: organization.id,
|
|
127
|
+
UserId: user.id,
|
|
128
|
+
role: 'Owner',
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it('should delete a block', async () => {
|
|
132
|
+
const block = await BlockVersion.create({
|
|
133
|
+
OrganizationId: organization.id,
|
|
134
|
+
name: 'test',
|
|
135
|
+
version: '0.0.0',
|
|
136
|
+
});
|
|
137
|
+
const clientCredentials = await authorizeCLI('blocks:delete', testApp);
|
|
138
|
+
await deleteBlock({
|
|
139
|
+
remote: testApp.defaults.baseURL,
|
|
140
|
+
clientCredentials,
|
|
141
|
+
blockName: block.name,
|
|
142
|
+
blockVersion: block.version,
|
|
143
|
+
organization: organization.id,
|
|
144
|
+
});
|
|
145
|
+
const foundBlocks = await BlockVersion.findAll();
|
|
146
|
+
expect(foundBlocks).toStrictEqual([]);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
98
149
|
//# sourceMappingURL=block.test.js.map
|
package/lib/organization.js
CHANGED
|
@@ -55,16 +55,18 @@ export async function updateOrganization({ description, email, icon, id, name, w
|
|
|
55
55
|
logger.info(`Successfully updated organization ${id}${name ? ` (${name})` : ''}`);
|
|
56
56
|
}
|
|
57
57
|
export async function upsertOrganization({ description, email, icon, id, name, website, }) {
|
|
58
|
+
var _a;
|
|
58
59
|
try {
|
|
59
60
|
await axios.get(`/api/organizations/${id}`);
|
|
60
|
-
updateOrganization({ description, email, icon, id, name, website });
|
|
61
|
+
await updateOrganization({ description, email, icon, id, name, website });
|
|
61
62
|
}
|
|
62
63
|
catch (error) {
|
|
63
|
-
if (axios.isAxiosError(error) && error.response
|
|
64
|
-
createOrganization({ description, email, icon, id, name, website });
|
|
64
|
+
if (axios.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
|
|
65
|
+
await createOrganization({ description, email, icon, id, name, website });
|
|
65
66
|
}
|
|
66
67
|
else {
|
|
67
68
|
logger.error(error);
|
|
69
|
+
throw error;
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { createServer, createTestUser, models, setArgv, useTestDatabase } from '@appsemble/server';
|
|
2
|
+
import { setTestApp } from 'axios-test-instance';
|
|
3
|
+
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
4
|
+
import { initAxios } from './initAxios.js';
|
|
5
|
+
import { createOrganization, updateOrganization, upsertOrganization } from './organization.js';
|
|
6
|
+
import { authorizeCLI } from './testUtils.js';
|
|
7
|
+
const argv = { host: 'http://localhost', secret: 'test', aesSecret: 'testSecret' };
|
|
8
|
+
let user;
|
|
9
|
+
let testApp;
|
|
10
|
+
const { Organization, OrganizationMember } = models;
|
|
11
|
+
useTestDatabase(import.meta);
|
|
12
|
+
beforeAll(() => {
|
|
13
|
+
vi.useFakeTimers();
|
|
14
|
+
setArgv(argv);
|
|
15
|
+
});
|
|
16
|
+
beforeEach(async () => {
|
|
17
|
+
vi.clearAllTimers();
|
|
18
|
+
vi.setSystemTime(0);
|
|
19
|
+
const server = await createServer();
|
|
20
|
+
testApp = await setTestApp(server);
|
|
21
|
+
initAxios({ remote: testApp.defaults.baseURL });
|
|
22
|
+
user = await createTestUser();
|
|
23
|
+
});
|
|
24
|
+
afterAll(() => {
|
|
25
|
+
vi.useRealTimers();
|
|
26
|
+
});
|
|
27
|
+
describe('createOrganization', () => {
|
|
28
|
+
it('should create a new organization', async () => {
|
|
29
|
+
await authorizeCLI('organizations:write', testApp);
|
|
30
|
+
await createOrganization({
|
|
31
|
+
description: 'test description',
|
|
32
|
+
id: 'test',
|
|
33
|
+
name: 'Test',
|
|
34
|
+
email: 'test@example.com',
|
|
35
|
+
icon: null,
|
|
36
|
+
website: 'https://example.com',
|
|
37
|
+
});
|
|
38
|
+
const organization = await Organization.findOne();
|
|
39
|
+
expect(organization).toMatchInlineSnapshot(`
|
|
40
|
+
{
|
|
41
|
+
"created": 1970-01-01T00:00:00.000Z,
|
|
42
|
+
"deleted": null,
|
|
43
|
+
"description": "test description",
|
|
44
|
+
"email": "test@example.com",
|
|
45
|
+
"icon": null,
|
|
46
|
+
"id": "test",
|
|
47
|
+
"name": "Test",
|
|
48
|
+
"updated": 1970-01-01T00:00:00.000Z,
|
|
49
|
+
"website": "https://example.com",
|
|
50
|
+
}
|
|
51
|
+
`);
|
|
52
|
+
});
|
|
53
|
+
it('should not create a new organization with duplicate id', async () => {
|
|
54
|
+
const organization = await Organization.create({
|
|
55
|
+
id: 'test',
|
|
56
|
+
name: 'Test',
|
|
57
|
+
});
|
|
58
|
+
vi.useRealTimers();
|
|
59
|
+
await authorizeCLI('organizations:write', testApp);
|
|
60
|
+
await expect(() => createOrganization({
|
|
61
|
+
description: 'test description',
|
|
62
|
+
id: organization.id,
|
|
63
|
+
name: 'Test',
|
|
64
|
+
email: 'test@example.com',
|
|
65
|
+
icon: null,
|
|
66
|
+
website: 'https://example.com',
|
|
67
|
+
})).rejects.toThrow('Request failed with status code 409');
|
|
68
|
+
vi.useFakeTimers();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('updateOrganization', () => {
|
|
72
|
+
it('should update an existing organization', async () => {
|
|
73
|
+
const organization = await Organization.create({
|
|
74
|
+
id: 'test',
|
|
75
|
+
name: 'Test',
|
|
76
|
+
});
|
|
77
|
+
await OrganizationMember.create({
|
|
78
|
+
OrganizationId: organization.id,
|
|
79
|
+
UserId: user.id,
|
|
80
|
+
role: 'Owner',
|
|
81
|
+
});
|
|
82
|
+
await authorizeCLI('organizations:write', testApp);
|
|
83
|
+
await updateOrganization({
|
|
84
|
+
id: organization.id,
|
|
85
|
+
name: 'Test changed',
|
|
86
|
+
description: null,
|
|
87
|
+
email: 'test@example.com',
|
|
88
|
+
website: null,
|
|
89
|
+
icon: null,
|
|
90
|
+
});
|
|
91
|
+
await organization.reload();
|
|
92
|
+
expect(organization.dataValues).toMatchInlineSnapshot(`
|
|
93
|
+
{
|
|
94
|
+
"created": 1970-01-01T00:00:00.000Z,
|
|
95
|
+
"deleted": null,
|
|
96
|
+
"description": null,
|
|
97
|
+
"email": "test@example.com",
|
|
98
|
+
"icon": null,
|
|
99
|
+
"id": "test",
|
|
100
|
+
"name": "Test changed",
|
|
101
|
+
"updated": 1970-01-01T00:00:00.000Z,
|
|
102
|
+
"website": null,
|
|
103
|
+
}
|
|
104
|
+
`);
|
|
105
|
+
});
|
|
106
|
+
it('should throw if the organization does not exist', async () => {
|
|
107
|
+
const organization = await Organization.create({
|
|
108
|
+
id: 'test',
|
|
109
|
+
name: 'Test',
|
|
110
|
+
});
|
|
111
|
+
await OrganizationMember.create({
|
|
112
|
+
OrganizationId: organization.id,
|
|
113
|
+
UserId: user.id,
|
|
114
|
+
role: 'Owner',
|
|
115
|
+
});
|
|
116
|
+
await organization.destroy();
|
|
117
|
+
await authorizeCLI('organizations:write', testApp);
|
|
118
|
+
await expect(() => updateOrganization({
|
|
119
|
+
id: organization.id,
|
|
120
|
+
name: 'Test changed',
|
|
121
|
+
description: null,
|
|
122
|
+
email: 'test@example.com',
|
|
123
|
+
website: null,
|
|
124
|
+
icon: null,
|
|
125
|
+
})).rejects.toThrow('Request failed with status code 404');
|
|
126
|
+
});
|
|
127
|
+
it('should throw if the user is not authorized', async () => {
|
|
128
|
+
const organization = await Organization.create({
|
|
129
|
+
id: 'test',
|
|
130
|
+
name: 'Test',
|
|
131
|
+
});
|
|
132
|
+
await OrganizationMember.create({
|
|
133
|
+
OrganizationId: organization.id,
|
|
134
|
+
UserId: user.id,
|
|
135
|
+
role: 'Owner',
|
|
136
|
+
});
|
|
137
|
+
await expect(() => updateOrganization({
|
|
138
|
+
id: organization.id,
|
|
139
|
+
name: 'Test changed',
|
|
140
|
+
description: null,
|
|
141
|
+
email: 'test@example.com',
|
|
142
|
+
website: null,
|
|
143
|
+
icon: null,
|
|
144
|
+
})).rejects.toThrow('Request failed with status code 401');
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('upsertOrganization', () => {
|
|
148
|
+
it('should create a new organization if doesn’t exist already', async () => {
|
|
149
|
+
await authorizeCLI('organizations:write', testApp);
|
|
150
|
+
await upsertOrganization({
|
|
151
|
+
description: 'test description',
|
|
152
|
+
id: 'test',
|
|
153
|
+
name: 'Test',
|
|
154
|
+
email: 'test@example.com',
|
|
155
|
+
icon: null,
|
|
156
|
+
website: 'https://example.com',
|
|
157
|
+
});
|
|
158
|
+
const organization = await Organization.findOne();
|
|
159
|
+
expect(organization).toMatchObject({
|
|
160
|
+
id: 'test',
|
|
161
|
+
description: 'test description',
|
|
162
|
+
name: 'Test',
|
|
163
|
+
email: 'test@example.com',
|
|
164
|
+
icon: null,
|
|
165
|
+
website: 'https://example.com',
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it('should update an existing organization', async () => {
|
|
169
|
+
const organization = await Organization.create({
|
|
170
|
+
id: 'test',
|
|
171
|
+
name: 'Test',
|
|
172
|
+
});
|
|
173
|
+
await OrganizationMember.create({
|
|
174
|
+
OrganizationId: organization.id,
|
|
175
|
+
UserId: user.id,
|
|
176
|
+
role: 'Owner',
|
|
177
|
+
});
|
|
178
|
+
await authorizeCLI('organizations:write', testApp);
|
|
179
|
+
await upsertOrganization({
|
|
180
|
+
id: organization.id,
|
|
181
|
+
name: 'Test changed',
|
|
182
|
+
description: null,
|
|
183
|
+
email: 'test@example.com',
|
|
184
|
+
website: null,
|
|
185
|
+
icon: null,
|
|
186
|
+
});
|
|
187
|
+
expect(organization).toMatchObject({
|
|
188
|
+
id: 'test',
|
|
189
|
+
name: 'Test',
|
|
190
|
+
});
|
|
191
|
+
await organization.reload();
|
|
192
|
+
expect(organization).toMatchObject({
|
|
193
|
+
id: organization.id,
|
|
194
|
+
name: 'Test changed',
|
|
195
|
+
description: null,
|
|
196
|
+
email: 'test@example.com',
|
|
197
|
+
website: null,
|
|
198
|
+
icon: null,
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
it('should throw if there is an error', async () => {
|
|
202
|
+
const organization = await Organization.create({
|
|
203
|
+
id: 'test',
|
|
204
|
+
name: 'Test',
|
|
205
|
+
});
|
|
206
|
+
await authorizeCLI('organizations:write', testApp);
|
|
207
|
+
// Fails because the organization member does not exist.
|
|
208
|
+
await expect(() => upsertOrganization({
|
|
209
|
+
id: organization.id,
|
|
210
|
+
name: 'Test changed',
|
|
211
|
+
description: null,
|
|
212
|
+
email: 'test@example.com',
|
|
213
|
+
website: 'https://www.example.com',
|
|
214
|
+
icon: null,
|
|
215
|
+
})).rejects.toThrow('Request failed with status code 403');
|
|
216
|
+
expect(organization).toMatchObject({
|
|
217
|
+
id: 'test',
|
|
218
|
+
name: 'Test',
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=organization.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|