UNPKG

2.71 kBPlain TextView Raw
1import {EventEmitter} from 'eventemitter3';
2import * as Promise from 'bluebird';
3import * as retry from 'bluebird-retry';
4import {expect} from 'chai';
5import {WampServer, WampRouter, wampRealm, wampServerOverFs} from '../src/nodejs';
6import {FileSystem, WampClientFileSystem, MemoryFileSystem} from '../src/universal';
7import {noConnectionError} from '../src/wamp-client-fs';
8import {EventsMatcher} from '../test-kit/drivers/events-matcher';
9import {
10 assertFileSystemContract,
11 ignoredDir,
12 ignoredFile,
13 fileName,
14 dirName,
15 content
16} from './implementation-suite'
17
18describe(`the wamp client filesystem implementation`, () => {
19
20 let wampServer: WampServer;
21
22 function server(): Promise<WampServer> {
23 return wampServerOverFs(new MemoryFileSystem(undefined, [ignoredDir, ignoredFile]), 3000);
24 }
25
26 function getFS(): Promise<WampClientFileSystem> {
27 return Promise.resolve(new WampClientFileSystem(`ws://127.0.0.1:3000`, wampRealm));
28 }
29
30 function getInitedFS(): Promise<WampClientFileSystem> {
31 return getFS().then(fs => fs.init());
32 }
33
34 const eventMatcherOptions: EventsMatcher.Options = {
35 interval: 50,
36 noExtraEventsGrace: 150,
37 timeout: 1500
38 };
39
40 beforeEach(() => server().then(clientAndServer => wampServer = clientAndServer));
41
42 afterEach(() => {
43 return new Promise(resolve => {
44 wampServer.router.close();
45 const errMsg = `WAMP connection hasn't been closed after the previous test`;
46 return retry(
47 () => (wampServer.connection as any).isConnected ? Promise.reject(errMsg) : Promise.resolve(),
48 {interval: 100, max_tries: 10}
49 ).then(() => resolve())
50 });
51 });
52
53 assertFileSystemContract(getInitedFS, eventMatcherOptions);
54
55 describe(`when not inited`, () => {
56 it(`fails on each CRUD method`, () => {
57 return Promise.all([
58 expect(getFS().then(fs => fs.saveFile(fileName, content))).to.eventually.be.rejectedWith(noConnectionError),
59 expect(getFS().then(fs => fs.deleteFile(fileName))).to.eventually.be.rejectedWith(noConnectionError),
60 expect(getFS().then(fs => fs.deleteDirectory(dirName))).to.eventually.be.rejectedWith(noConnectionError),
61 expect(getFS().then(fs => fs.ensureDirectory(dirName))).to.eventually.be.rejectedWith(noConnectionError),
62 expect(getFS().then(fs => fs.loadTextFile(fileName))).to.eventually.be.rejectedWith(noConnectionError),
63 expect(getFS().then(fs => fs.loadDirectoryTree())).to.eventually.be.rejectedWith(noConnectionError)
64 ]);
65
66 });
67 });
68});