diff --git a/server/base/application.ts b/server/base/application.ts index 7feadc65..5bd769ed 100644 --- a/server/base/application.ts +++ b/server/base/application.ts @@ -29,6 +29,7 @@ export class Application { this.app.use(bodyParser.json()); this.app.use(bodyParser.urlencoded({ extended: true })); await import('../example/example.router'); + await import('../push/push.router'); this.app.listen(8090); } @@ -37,6 +38,7 @@ export class Application { this.app.use(bodyParser.json()); this.app.use(bodyParser.urlencoded({ extended: true })); await import('../example/example.router'); + await import('../push/push.router'); return this.app; } diff --git a/server/push/push.router.ts b/server/push/push.router.ts new file mode 100644 index 00000000..0c9a77bf --- /dev/null +++ b/server/push/push.router.ts @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017 The Absolute Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as express from 'express'; +import { Application } from 'server/base/application'; + +/** + * PushRouter + */ +@Application.ROUTE('/push/register') +export class Register { + public post(request: express.Request, response: express.Response): void { + if (request.body) { + if (request.body.param === 'register') { + response.sendStatus(200); + } else { + response.sendStatus(400); + } + } else { + response.sendStatus(501); + } + } +} + +@Application.ROUTE('/push/unregister') +export class Unregister { + public post(request: express.Request, response: express.Response): void { + if (request.body) { + if (request.body.param === 'unregister') { + response.sendStatus(200); + } else { + response.sendStatus(400); + } + } else { + response.sendStatus(501); + } + } +} + +@Application.ROUTE('/push/send') +export class Send { + public post(request: express.Request, response: express.Response): void { + if (request.body) { + if (request.body.param === 'send') { + response.sendStatus(200); + } else { + response.sendStatus(400); + } + } else { + response.sendStatus(501); + } + } +} diff --git a/server/push/push.test.ts b/server/push/push.test.ts new file mode 100644 index 00000000..d892edbb --- /dev/null +++ b/server/push/push.test.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2017 The Absolute Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { } from 'jest'; +import { Application } from 'server/base/application'; +import * as supertest from 'supertest'; + +test('POST x-www-form-urlencoded', async () => { + const request: {} = supertest(await Application.START_FOR_TESTING()); + const response: {} = await request.post('/push/register').set + ('Content-Type', 'application/x-www-form-urlencoded').send('param=register'); + expect(response.statusCode).toBe(200); +}); + +test('POST x-www-form-urlencoded', async () => { + const request: {} = supertest(await Application.START_FOR_TESTING()); + const response: {} = await request.post('/push/unregister').set + ('Content-Type', 'application/x-www-form-urlencoded').send('param=unregister'); + expect(response.statusCode).toBe(200); +}); + +test('POST x-www-form-urlencoded', async () => { + const request: {} = supertest(await Application.START_FOR_TESTING()); + const response: {} = await request.post('/push/send').set + ('Content-Type', 'application/x-www-form-urlencoded').send('param=send'); + expect(response.statusCode).toBe(200); +});