mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
285 lines
6.9 KiB
JavaScript
285 lines
6.9 KiB
JavaScript
import process from 'node:process';
|
|
import {promisify} from 'node:util';
|
|
import test from 'supertape';
|
|
import tryToCatch from 'try-to-catch';
|
|
import {connect} from '../../test/before.mjs';
|
|
import {createConfigManager} from '../cloudcmd.mjs';
|
|
import {distributeImport} from './import.mjs';
|
|
|
|
const distribute = {
|
|
import: promisify(distributeImport),
|
|
};
|
|
|
|
const config = createConfigManager();
|
|
|
|
process.on('unhandledRejection', console.log);
|
|
|
|
test('distribute: import: canceled', async (t) => {
|
|
const {done} = await connect({
|
|
config: {
|
|
export: false,
|
|
import: false,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
const {status} = await distribute.import(config);
|
|
|
|
await done();
|
|
|
|
t.equal(status, 'canceled');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: received: no error', async (t) => {
|
|
const {done, port} = await connect({
|
|
config: {
|
|
import: true,
|
|
importListen: false,
|
|
export: true,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
config('importUrl', `http://localhost:${port}`);
|
|
|
|
const [e] = await tryToCatch(distribute.import, config);
|
|
|
|
await done();
|
|
|
|
t.notOk(e, 'should not be error');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: received', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done, port} = await connect({
|
|
configManager,
|
|
config: {
|
|
name: 'bill',
|
|
import: true,
|
|
importToken: 'a',
|
|
exportToken: 'a',
|
|
export: true,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
configManager('importUrl', `http://localhost:${port}`);
|
|
|
|
const {status} = await distribute.import(configManager);
|
|
await done();
|
|
|
|
t.equal(status, 'received');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: received: auth: reject', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done, port} = await connect({
|
|
configManager,
|
|
config: {
|
|
name: 'bill',
|
|
import: true,
|
|
importToken: 'xxxxx',
|
|
exportToken: 'bbbbb',
|
|
export: true,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
configManager('importUrl', `http://localhost:${port}`);
|
|
|
|
const {status} = await distribute.import(configManager);
|
|
await done();
|
|
|
|
t.equal(status, 'reject');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: received: auth: accept', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done, port} = await connect({
|
|
configManager,
|
|
config: {
|
|
name: 'bill',
|
|
import: true,
|
|
importToken: 'xxxxx',
|
|
exportToken: 'xxxxx',
|
|
export: true,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
configManager('importUrl', `http://localhost:${port}`);
|
|
|
|
const {status} = await distribute.import(configManager);
|
|
await done();
|
|
|
|
t.equal(status, 'received');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: received: no name', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done, port} = await connect({
|
|
configManager,
|
|
config: {
|
|
name: '',
|
|
import: true,
|
|
export: true,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
configManager('importUrl', `http://localhost:${port}`);
|
|
|
|
const {status} = await distribute.import(configManager);
|
|
await done();
|
|
|
|
t.equal(status, 'received');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: error', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done} = await connect({
|
|
configManager,
|
|
config: {
|
|
import: true,
|
|
export: false,
|
|
importListen: false,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
configManager('importUrl', `http://localhost:0`);
|
|
|
|
const {status} = await distribute.import(configManager, {
|
|
reconnection: false,
|
|
});
|
|
|
|
await done();
|
|
|
|
t.equal(status, 'connect_error');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: config:change: no export', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const {done} = await connect({
|
|
configManager,
|
|
config: {
|
|
import: true,
|
|
export: false,
|
|
importListen: true,
|
|
log: false,
|
|
},
|
|
});
|
|
|
|
const {status} = await distribute.import(configManager, {
|
|
reconnection: false,
|
|
});
|
|
|
|
await done();
|
|
|
|
t.equal(status, 'connect_error');
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: env', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const configManagerImport = createConfigManager();
|
|
|
|
const exporter = await connect({
|
|
configManager,
|
|
config: {
|
|
name: 'bill',
|
|
import: false,
|
|
importListen: false,
|
|
export: true,
|
|
exportToken: 'a',
|
|
log: false,
|
|
editor: 'edward',
|
|
},
|
|
});
|
|
|
|
const importer = await connect({
|
|
configManager: configManagerImport,
|
|
config: {
|
|
name: 'jack',
|
|
import: true,
|
|
importToken: 'a',
|
|
export: false,
|
|
importListen: false,
|
|
log: false,
|
|
editor: 'deepword',
|
|
},
|
|
});
|
|
|
|
process.env.cloudcmd_editor = 'some editor';
|
|
|
|
configManagerImport('importUrl', `http://localhost:${exporter.port}`);
|
|
|
|
await distribute.import(configManagerImport);
|
|
|
|
await importer.done();
|
|
await exporter.done();
|
|
|
|
delete process.env.cloudcmd_editor;
|
|
|
|
const result = configManagerImport('editor');
|
|
const expected = 'deepword';
|
|
|
|
t.equal(result, expected);
|
|
t.end();
|
|
});
|
|
|
|
test('distribute: import: no env', async (t) => {
|
|
const configManager = createConfigManager();
|
|
const configManagerImport = createConfigManager();
|
|
|
|
const exporter = await connect({
|
|
configManager,
|
|
config: {
|
|
name: 'bill',
|
|
import: false,
|
|
importListen: false,
|
|
export: true,
|
|
exportToken: 'a',
|
|
log: false,
|
|
editor: 'edward',
|
|
},
|
|
});
|
|
|
|
const importer = await connect({
|
|
configManager: configManagerImport,
|
|
config: {
|
|
name: 'jack',
|
|
import: true,
|
|
importToken: 'a',
|
|
export: false,
|
|
importListen: false,
|
|
log: false,
|
|
editor: 'deepword',
|
|
},
|
|
});
|
|
|
|
configManagerImport('importUrl', `http://localhost:${exporter.port}`);
|
|
|
|
await distribute.import(configManagerImport);
|
|
|
|
await importer.done();
|
|
await exporter.done();
|
|
|
|
const result = configManagerImport('editor');
|
|
const expected = 'edward';
|
|
|
|
t.equal(result, expected);
|
|
t.end();
|
|
});
|