From 89eca4a5c19382c0d55c1a05e68a2833017affe3 Mon Sep 17 00:00:00 2001 From: Sorrel Bri Date: Tue, 14 Jan 2020 12:06:25 -0800 Subject: [PATCH] stub new user sign up --- packages/server/server/controllers/auth.js | 10 ++++-- .../server/server/middleware/verifyJWT.js | 24 +++++++++++++ packages/server/server/test/auth.spec.js | 19 +++++++++-- packages/server/server/test/spec.js | 34 ++----------------- 4 files changed, 51 insertions(+), 36 deletions(-) create mode 100644 packages/server/server/middleware/verifyJWT.js diff --git a/packages/server/server/controllers/auth.js b/packages/server/server/controllers/auth.js index 5b3c44c..430e40e 100644 --- a/packages/server/server/controllers/auth.js +++ b/packages/server/server/controllers/auth.js @@ -1,11 +1,17 @@ +const knex = require('../data/db') const signToken = require('../services/signToken'); const signUp = async (req, res, next) => { const user = req.body; try { - signToken(res, user); - res.send('ok').status(200); + knex('user') + .insert(user) + .then(newUser => { + signToken(res, newUser[0]); + res.send('ok').status(200); + } + ) } catch (err) { res.status(500).json(err) diff --git a/packages/server/server/middleware/verifyJWT.js b/packages/server/server/middleware/verifyJWT.js new file mode 100644 index 0000000..ed3122f --- /dev/null +++ b/packages/server/server/middleware/verifyJWT.js @@ -0,0 +1,24 @@ +const dotenv = require('dotenv'); +const jwt = require('jsonwebtoken'); + +dotenv.config(); + +const verifyToken = async (req, res, next) => { + const token = req.cookies.token || ''; + const secret = process.env.NODE_ENV === 'test' ? process.env.TEST_SECRET : process.env.JWT_SECRET; + try { + if (!token) { + return res.status(401).json('You need to Login') + } + const decrypt = await jwt.verify(token, secret); + req.user = { + id: decrypt.id, + username: username, + }; + next(); + } catch (err) { + return res.status(500).json(err.toString()); + } +}; + +module.exports = verifyToken; \ No newline at end of file diff --git a/packages/server/server/test/auth.spec.js b/packages/server/server/test/auth.spec.js index 251c5bc..5233a4b 100644 --- a/packages/server/server/test/auth.spec.js +++ b/packages/server/server/test/auth.spec.js @@ -1,4 +1,4 @@ -const authSpec = (chai, server) => { +const authSpec = (chai, knex, server) => { const newUserFormData = { 'username':'newUser', 'password':'password', @@ -27,6 +27,21 @@ const authSpec = (chai, server) => { res.should.cookie('token'); done(); }); - }); + }); + + it('post to sign up should add user to db', done => { + chai.request(server) + .post('/auth/signup') + .type('form') + .send(newUserFormData) + .end((err, res) => { + if (err) done(err); + knex('user').where({'username': newUserFormData.username}).then(results => { + const newUser = results[0]; + if (newUser.username === newUserFormData.username) done(); + }) + }); + + }) } module.exports = authSpec; \ No newline at end of file diff --git a/packages/server/server/test/spec.js b/packages/server/server/test/spec.js index d4efcb8..0312815 100644 --- a/packages/server/server/test/spec.js +++ b/packages/server/server/test/spec.js @@ -8,7 +8,7 @@ const server = require('../server'); const should = chai.should(); -// const authSpec = require('./auth.spec'); +const authSpec = require('./auth.spec'); chai.use(chaiHttp); // ! to run tests from other testing modules @@ -25,37 +25,7 @@ const setupDb = () => { describe('Auth Routes', function() { setupDb(); - // authSpec(chai, server) - - const newUserFormData = { - 'username':'newUser', - 'password':'password', - 'email':'user@example.com' - } - - it('post to sign up should return 200 status', function(done) { - chai.request(server) - .post('/auth/signup') - .type('form') - .send(newUserFormData) - .end((err, res) => { - if (err) done(err); - res.should.status(200); - done(); - }); - }); - - it('post to sign up should return token', done => { - chai.request(server) - .post('/auth/signup') - .type('form') - .send(newUserFormData) - .end((err, res) => { - if (err) done(err); - res.should.cookie('token'); - done(); - }); - }); + authSpec(chai, knex, server) })