forked from remotestorage/api-test-suite
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.test.js
More file actions
69 lines (55 loc) · 1.77 KB
/
Copy pathapi.test.js
File metadata and controls
69 lines (55 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { expect } from 'chai';
import util from './util.js';
import { generate } from './generate.js';
import dotenv from 'dotenv';
dotenv.config({ path: `.env${ process.env.ENV ? `.${ process.env.ENV }` : '' }` });
const State = {};
const populate = () => Object.assign(State, {
server: process.env.SERVER_URL,
account_handle: process.env.ACCOUNT_HANDLE,
scope: process.env.TOKEN_SCOPE || 'api-test-suite',
token_read_write: process.env.TOKEN_READ_WRITE,
token_read_only: process.env.TOKEN_READ_ONLY,
token_global: process.env.TOKEN_GLOBAL,
spec_version: process.env.SPEC_VERSION,
});
populate();
before(async () => {
if (typeof window !== 'undefined')
populate();
State.webfinger = await util.webfinger.discover(State.server, State.account_handle);
State.baseURL = State.webfinger.href;
State.storage = util.storage(Object.assign(util.clone(State), {
token: State.token_read_write,
}));
if ([undefined, ''].includes(State.spec_version))
State.spec_version = util.webfinger.version(State.webfinger);
});
after(function () {
const erase = async (path, storage) => {
const list = await storage.get(path);
if (list.status === 404)
return
const body = await list.json();
const entries = Object.entries(State.spec_version >= 2 ? body.items : body);
await Promise.all(entries.map(([key, value]) => {
const _path = path + key;
return _path.endsWith('/') ? erase(_path, storage) : storage.delete(_path);
}));
};
erase('/', State.storage);
erase('/', util.storage(Object.assign(util.clone(State), {
scope: `public/${ State.scope }`,
token: State.token_read_write,
})));
erase('/', util.storage(Object.assign(util.clone(State), {
token: State.token_global,
scope: `${ State.scope }-global/`,
})));
});
generate({
describe,
it,
expect,
State,
});