mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-06 11:59:51 +08:00
test: throw no permission when download failed (#1742)
This commit is contained in:
@@ -101,19 +101,20 @@ describe('api', () => {
|
|||||||
document.removeEventListener('affine-error', listener);
|
document.removeEventListener('affine-error', listener);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('blob too large', async () => {
|
test('no permission', async () => {
|
||||||
let called = false;
|
await workspaceApis.downloadWorkspace('not-exist').catch(e => {
|
||||||
try {
|
|
||||||
await workspaceApis.uploadBlob(
|
|
||||||
'test',
|
|
||||||
new ArrayBuffer(1024 * 1024 * 1024 + 1),
|
|
||||||
'image/png'
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
called = true;
|
|
||||||
expect(e).toBeInstanceOf(RequestError);
|
expect(e).toBeInstanceOf(RequestError);
|
||||||
}
|
expect(e.code).toBe(MessageCode.noPermission);
|
||||||
expect(called, 'throw error').toBe(true);
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('blob too large', async () => {
|
||||||
|
await workspaceApis
|
||||||
|
.uploadBlob('test', new ArrayBuffer(1024 * 1024 * 1024 + 1), 'image/png')
|
||||||
|
.catch(e => {
|
||||||
|
expect(e).toBeInstanceOf(RequestError);
|
||||||
|
expect(e.code).toBe(MessageCode.blobTooLarge);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('refresh token', async () => {
|
test('refresh token', async () => {
|
||||||
|
|||||||
@@ -5,9 +5,12 @@ import { z } from 'zod';
|
|||||||
import { getLoginStorage } from '../login';
|
import { getLoginStorage } from '../login';
|
||||||
|
|
||||||
export class RequestError extends Error {
|
export class RequestError extends Error {
|
||||||
|
public readonly code: MessageCode;
|
||||||
|
|
||||||
constructor(code: MessageCode, cause: unknown | null = null) {
|
constructor(code: MessageCode, cause: unknown | null = null) {
|
||||||
super(Messages[code].message);
|
super(Messages[code].message);
|
||||||
sendMessage(code);
|
sendMessage(code);
|
||||||
|
this.code = code;
|
||||||
this.name = 'RequestError';
|
this.name = 'RequestError';
|
||||||
this.cause = cause;
|
this.cause = cause;
|
||||||
}
|
}
|
||||||
@@ -360,8 +363,16 @@ export function createWorkspaceApis(prefixUrl = '/') {
|
|||||||
Authorization: auth.token,
|
Authorization: auth.token,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
.then(r =>
|
||||||
|
r.status === 403
|
||||||
|
? Promise.reject(new RequestError(MessageCode.noPermission))
|
||||||
|
: r
|
||||||
|
)
|
||||||
.then(r => r.arrayBuffer())
|
.then(r => r.arrayBuffer())
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
|
if (e instanceof RequestError) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
throw new RequestError(MessageCode.downloadWorkspaceFailed, e);
|
throw new RequestError(MessageCode.downloadWorkspaceFailed, e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user