Test get and set metrics service

This commit is contained in:
fortuna 2018-09-10 15:51:44 -04:00
parent b7b71bd3d2
commit 4c03fc6fe3
2 changed files with 46 additions and 2 deletions

View file

@ -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) {

View file

@ -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();
}