Skip to content

Commit 4462145

Browse files
committed
Adds settings endpoint to configure loglevel
1 parent bc96f0b commit 4462145

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

spec/SettingsRouter.spec.js

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
var request = require('request');
2+
3+
var headers = {
4+
'X-Parse-Application-Id': 'test',
5+
'X-Parse-Master-Key': 'test'
6+
};
7+
8+
9+
describe('SettingsRouter', () => {
10+
11+
it('should set the loglevel', (done) => {
12+
request.post({
13+
headers: headers,
14+
json: {
15+
'logLevel': 'silly'
16+
},
17+
url: 'http://localhost:8378/1/settings'
18+
}, (err, res, body) => {
19+
request.get({
20+
url: 'http://localhost:8378/1/settings',
21+
headers: headers
22+
}, (err, res, body)=> {
23+
body = JSON.parse(body);
24+
expect(body.logLevel).toBe('silly');
25+
done();
26+
});
27+
});
28+
});
29+
30+
it('should not access without masterKey', (done) => {
31+
request.post({
32+
headers: {
33+
'X-Parse-Application-Id': 'test',
34+
'X-Parse-Master-Key': 'invalid'
35+
},
36+
json: {
37+
'logLevel': 'silly'
38+
},
39+
url: 'http://localhost:8378/1/settings'
40+
}, (err, res, body) => {
41+
expect(body.error).not.toBeUndefined();
42+
expect(body.error).toBe('unauthorized');
43+
request.get({
44+
url: 'http://localhost:8378/1/settings',
45+
headers: {
46+
'X-Parse-Application-Id': 'test',
47+
'X-Parse-Master-Key': 'invalid'
48+
}
49+
}, (err, res, body)=> {
50+
body = JSON.parse(body);
51+
expect(body.error).toBe('unauthorized');
52+
done();
53+
});
54+
});
55+
})
56+
57+
})

src/ParseServer.js

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import { SchemasRouter } from './Routers/SchemasRouter';
4646
import { SessionsRouter } from './Routers/SessionsRouter';
4747
import { UserController } from './Controllers/UserController';
4848
import { UsersRouter } from './Routers/UsersRouter';
49+
import { SettingsRouter } from './Routers/SettingsRouter';
4950

5051
import ParsePushAdapter from 'parse-server-push-adapter';
5152
// Mutate the Parse object to add the Cloud Code handlers
@@ -246,6 +247,7 @@ class ParseServer {
246247
new IAPValidationRouter(),
247248
new FeaturesRouter(),
248249
new GlobalConfigRouter(),
250+
new SettingsRouter(),
249251
];
250252

251253
if (process.env.PARSE_EXPERIMENTAL_HOOKS_ENABLED || process.env.TESTING) {

src/Routers/SettingsRouter.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import PromiseRouter from '../PromiseRouter';
2+
import * as middleware from "../middlewares";
3+
import { logger, configureLogger } from '../logger';
4+
import winston from 'winston';
5+
6+
export class SettingsRouter extends PromiseRouter {
7+
mountRoutes() {
8+
this.route('GET', '/settings', middleware.promiseEnforceMasterKeyAccess, (req) => {
9+
return Promise.resolve({
10+
response: {
11+
logLevel: winston.level
12+
}
13+
})
14+
});
15+
this.route('POST','/settings', middleware.promiseEnforceMasterKeyAccess, (req) => {
16+
let body = req.body;
17+
let logLevel = body.logLevel;
18+
if (logLevel) {
19+
configureLogger({level: logLevel});
20+
}
21+
return Promise.resolve({
22+
response: body
23+
})
24+
});
25+
}
26+
}

0 commit comments

Comments
 (0)