diff --git a/aliza/gulpfile.js b/aliza/gulpfile.js new file mode 100644 index 0000000..4d21f34 --- /dev/null +++ b/aliza/gulpfile.js @@ -0,0 +1,19 @@ +const gulp = require('gulp'); +const eslint = require('gulp-eslint'); +const mocha = require ('gulp-mocha'); + +gulp.task('default', ['lint', 'mocha'], () => { + console.log('default for lint and mocha'); +}); + + +gulp.task('lint', () => { + gulp.src('/*.js') + .pipe(eslint({})) + .pipe(eslint.format()) +}); + +gulp.task('mocha', () => { + gulp.src('test/test.js') + .pipe(mocha()); +}); diff --git a/aliza/package.json b/aliza/package.json new file mode 100644 index 0000000..e49ebc6 --- /dev/null +++ b/aliza/package.json @@ -0,0 +1,22 @@ +{ + "name": "aliza", + "version": "1.0.0", + "description": "basic http server lab", + "main": "server.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "author": "aliza", + "license": "ISC", + "devDependencies": { + "chai": "^3.5.0", + "chai-http": "^2.0.1", + "gulp": "^3.9.1", + "gulp-eslint": "^2.0.0", + "gulp-mocha": "^2.2.0" + } +} diff --git a/aliza/server.js b/aliza/server.js new file mode 100644 index 0000000..c10cb1c --- /dev/null +++ b/aliza/server.js @@ -0,0 +1,43 @@ +'use strict'; + +const http = require('http'); + +const database = {}; + +http.createServer((req, res) => { + if (req.url === '/time' && req.method === 'GET'){ + let date = new Date(); + let time = date.getHours() + ':' + date.getMinutes(); + res.write(time + '\n'); + return res.end(); + } + + let user = req.url.substring(7); + if (req.url === '/greet/' + user && req.method === 'GET'){ + res.write('Hello ' + user + '\n'); + return res.end(); + } + + //curl localhost:3000/greet -X POST -d '{"name":"aliza"}' + + if (req.url === '/greet' && req.method === 'POST') { + var name = ''; + req.on('data', (data) => { + name += data.toString(); + }); + req.on('end', () => { + var nameObj = JSON.parse(name); + res.write('Hello ' + nameObj.name + '\n'); + return res.end(); + }) + } + + else { + res.writeHead(404, { + 'Content-Type': 'text/html' + }) + res.write('NOT FOUND'); + res.end(); + } + +}).listen(3000); diff --git a/aliza/test/test.js b/aliza/test/test.js new file mode 100644 index 0000000..ecaf4bd --- /dev/null +++ b/aliza/test/test.js @@ -0,0 +1,29 @@ +const chai = require('chai'); +const chaiHTTP = require('chai-http'); +const expect = chai.expect; +chai.use(chaiHTTP); +const request = chai.request; + +require('../server'); + +describe('HTTP tests', () => { + it('should give time on get /time', (done) => { + request('localhost:3000') + .get('/time') + .end((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql(new Date().getHours() + ':' + new Date().getMinutes() + '\n'); + done(); + }); + }); + // it('should catch not found', (done) => { + // request('localhost: 3000') + // .get('/notthere') + // .end((err, res) => { + // expect(res).to.have.status(404); + // expect(res.text).to.eql('NOT FOUND'); + // done(); + // }); + // }); +});