From 4c03fc6fe3adf9e28fa3ba29d8f47f0e9e7efd60 Mon Sep 17 00:00:00 2001 From: fortuna Date: Mon, 10 Sep 2018 15:51:44 -0400 Subject: [PATCH] Test get and set metrics service --- src/shadowbox/server/manager_service.spec.ts | 44 ++++++++++++++++++++ src/shadowbox/server/manager_service.ts | 4 +- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/shadowbox/server/manager_service.spec.ts b/src/shadowbox/server/manager_service.spec.ts index f6ae5bef..3b2f2903 100644 --- a/src/shadowbox/server/manager_service.spec.ts +++ b/src/shadowbox/server/manager_service.spec.ts @@ -217,6 +217,50 @@ describe('ShadowsocksManagerService', () => { }); }); }); + + describe('getShareMetrics', () => { + it('Returns value from config', (done) => { + const serverConfig = new InMemoryConfig({metricsEnabled: true} as ServerConfigJson); + const service = new ShadowsocksManagerService('default name', serverConfig, null, null); + service.getShareMetrics( + {params: {}}, { + send: (httpCode, data: {metricsEnabled: boolean}) => { + expect(httpCode).toEqual(200); + expect(data.metricsEnabled).toEqual(true); + responseProcessed = true; + } + }, + done); + }); + it('Returns false by default', (done) => { + const serverConfig = new InMemoryConfig({} as ServerConfigJson); + const service = new ShadowsocksManagerService('default name', serverConfig, null, null); + service.getShareMetrics( + {params: {}}, { + send: (httpCode, data: {metricsEnabled: boolean}) => { + expect(httpCode).toEqual(200); + expect(data.metricsEnabled).toEqual(false); + responseProcessed = true; + } + }, + done); + }); + }); + describe('setShareMetrics', () => { + it('Sets value in the config', (done) => { + const serverConfig = new InMemoryConfig({metricsEnabled: false} as ServerConfigJson); + const service = new ShadowsocksManagerService('default name', serverConfig, null, null); + service.setShareMetrics( + {params: {metricsEnabled: true}}, { + send: (httpCode, _) => { + expect(httpCode).toEqual(204); + expect(serverConfig.written.metricsEnabled).toEqual(true); + responseProcessed = true; + } + }, + done); + }); + }); }); function getFirstAccessKey(repo: AccessKeyRepository) { diff --git a/src/shadowbox/server/manager_service.ts b/src/shadowbox/server/manager_service.ts index 124f39d9..35147c48 100644 --- a/src/shadowbox/server/manager_service.ts +++ b/src/shadowbox/server/manager_service.ts @@ -20,7 +20,6 @@ import * as logging from '../infrastructure/logging'; import {AccessKey, AccessKeyRepository} from '../model/access_key'; import {ManagerStats} from './manager_metrics'; -import * as server_config from './server_config'; import {ServerConfigJson} from './server_config'; // Creates a AccessKey response. @@ -49,6 +48,7 @@ function accessKeyToJson(accessKey: AccessKey) { interface RequestParams { id?: string; name?: string; + metricsEnabled?: boolean; } interface RequestType { params: RequestParams; @@ -179,7 +179,7 @@ export class ShadowsocksManagerService { } public getShareMetrics(req: RequestType, res: ResponseType, next: restify.Next): void { - res.send(200, {metricsEnabled: this.serverConfig.data().metricsEnabled}); + res.send(200, {metricsEnabled: this.serverConfig.data().metricsEnabled || false}); next(); }