Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 6 additions & 11 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,18 @@ const mongoose = require('mongoose');
const errorHandler = require('./middlewares/errorHandler')
const app = express();
const cors = require('cors')
const PORT = process.env.PORT || 3000
const NODE_ENV = process.env.NODE_ENV || 'development';
const PORT = process.env.PORT
const NODE_ENV = process.env.NODE_ENV;
const databaseConnect = require("./helpers/databaseConnect")
const CronJob = require('cron').CronJob;
const axios = require('axios')

app.use(cors())
app.use(express.urlencoded({extended:false}));
app.use(express.json());

mongoose.connect(`mongodb+srv://${process.env.ATLAS_USER}:${process.env.ATLAS_PASSWORD}@cluster0-xigat.gcp.mongodb.net/eve${NODE_ENV}?retryWrites=true`, {useNewUrlParser:true})
.then(function(success){
console.log('succesfully connect to database')
})
.catch(function(err){
console.log(err)
})

databaseConnect(mongoose, process.env.ATLAS_USER, process.env.ATLAS_PASSWORD, NODE_ENV)

const title = 'Example title'
const body = 'Example body'
let pushMessage = JSON.stringify({
Expand All @@ -44,4 +39,4 @@ app.use(errorHandler);

app.listen(PORT, function(){console.log('listen to port ' + PORT)})

module.exports = app;
module.exports = app;
13 changes: 13 additions & 0 deletions controllers/messages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

class MessageController {
static postMessage(req,res,next){


res.status(200).json({
message: "success"
})
}
}


module.exports = MessageController
1 change: 1 addition & 0 deletions controllers/users.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const User = require('../models/user');
const tokenHelper = require('../helpers/tokenHandler')
const encryption = require('../helpers/encryption')

class UserController{

static login(req,res,next){
Expand Down
12 changes: 12 additions & 0 deletions helpers/databaseConnect.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

module.exports = async function(mongoose,user,password, environment){
console.log(environment, "environtmenynya")
try{
await mongoose.connect(`mongodb+srv://${user}:${password}@cluster0-xigat.gcp.mongodb.net/eve-${environment}?retryWrites=true`, {useNewUrlParser:true})
return true

}catch(err){
return false
}

}
5 changes: 3 additions & 2 deletions helpers/errorhandling.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ var jwtError = ['TokenExpiredError','JsonWebTokenError','NotBeforeError']

function nodeErrorMessage(message){
switch(message){

case 'Not Authorized': return 403;
case 'User not found':
return 403;
case 'Not Authorized':{
case 'Token is undefined':{
return 401;
}
case 'Token is undefined':
Expand Down
2 changes: 0 additions & 2 deletions middlewares/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,5 @@ module.exports = {
}

},
authorization : function(req,res,next){
}

}
1 change: 1 addition & 0 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const routes = require('express').Router();

routes.use('/users', require('./users'));
routes.use("/messages", require("./messages"))
routes.use('/movies', require('./movie'));
routes.use('/resto', require('./resto'));
routes.use('/upload', require('./upload'))
Expand Down
9 changes: 9 additions & 0 deletions routes/messages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const routes = require('express').Router();
const MessageController = require("../controllers/messages")
const auth = require("../middlewares/auth")

routes.post("/", auth.authentication, MessageController.postMessage)



module.exports = routes
19 changes: 0 additions & 19 deletions test/testhelper/userDrop.js

This file was deleted.

14 changes: 14 additions & 0 deletions test/unit.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const chai = require("chai");;
const assert = chai.assert
const expect = chai.expect;
const app = require('../app');
const User = require("../models/user")
const databaseConnect = require("../helpers/databaseConnect")
const mongoose = require("mongoose")

describe("Database connection testing", function(){
it("should failed connecting to database and return false", function(){
var success = databaseConnect(mongoose, "adminPalsu", "psswordPalsu", "test")
assert(success, false)
})
})
149 changes: 85 additions & 64 deletions test/user.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,45 @@ const chai = require("chai");
const chaiHttp = require('chai-http');
const expect = chai.expect;
const app = require('../app');
const userDrop = require("./testhelper/userDrop")
const User = require("../models/user")

chai.use(chaiHttp);

before(function(done) {
userDrop(done)
});

after(function(done) {
userDrop(done);
});

var token;

describe("User tests", function () {
this.timeout(5000);
before(function(done) {
User
.deleteMany({
_id:{
$nin: ["5cde8a90d3f5935b75012395" ]
}
})
.then(function() {
console.log('UDAH')
done();
})
.catch(function(err) {
console.log(err)
done(err)
});
});

after(function(done) {
User
.deleteMany({
_id:{
$nin: ["5cde8a90d3f5935b75012395" ]
}
})
.then(function() {
done();
})
.catch(function(err) {
console.log(err)
done(err)
});
});
describe(" POST /users/register", function () {
it("should success register user with status 201 with no error", function (done) {
let user = {
Expand All @@ -25,10 +49,11 @@ describe("User tests", function () {
password: "12345",
expoNotificationToken: "dummyToken"
};

chai
.request(app)
.post("/users/register")
.set('content-type', 'application/x-www-form-urlencoded')
.send(user)
.end(function (err, res) {
expect(err).to.be.null;
Expand All @@ -39,22 +64,24 @@ describe("User tests", function () {
expect(res.body).to.have.keys(['token','user']);
expect(res.body.user).to.have.keys(['_id','name', "email", "password", "expoNotificationToken", "relationshipPoint"]);
done()
});
})
});
it("should error with error code 400", function(done){
let errorUser ={}
chai
.request(app)
.post("/users/register")
.set('content-type', 'application/x-www-form-urlencoded')
.send(errorUser)
.end(function(err, res){
console.log(JSON.stringify(res.body,null,3))

expect(err).to.be.null;
expect(res).to.have.status(400)
expect(res.body).to.have.all.keys('error','message',"source","statusCode");
expect(res.body.message).to.include('validation')
done()
})

})
});

Expand All @@ -67,6 +94,7 @@ describe("User tests", function () {
chai
.request(app)
.post("/users/login")
.set('content-type', 'application/x-www-form-urlencoded')
.send(user)
.end(function(err,res){
expect(err).to.be.null;
Expand All @@ -77,6 +105,8 @@ describe("User tests", function () {
token = res.body.token
done();
})


})
it("Login Failed: wrong email with status 400", function(done){
let user = {
Expand All @@ -86,28 +116,29 @@ describe("User tests", function () {
chai
.request(app)
.post("/users/login")
.set('content-type', 'application/x-www-form-urlencoded')
.send(user)
.end(function(err,res){
console.log(JSON.stringify(res.body,null,3))
.end(function(err,res){
expect(err).to.be.null;
expect(res).to.have.status(400);
expect(res.body).to.be.an("object")
expect(res.body.message).to.equal("Email is Invalid!")
expect(res.body).to.have.all.keys('error','message',"source","statusCode");
done();
})

})
it("Login Failed: wrong password with status 400", function(done){
let user = {
"email": "test@email.com",
"email": "coba@email.com",
"password": "pas",
}
chai
.request(app)
.post("/users/login")
.set('content-type', 'application/x-www-form-urlencoded')
.send(user)
.end(function(err,res){
console.log(JSON.stringify(res.body,null,3))
expect(err).to.be.null;
expect(res).to.have.status(400);
expect(res.body).to.be.an("object")
Expand All @@ -116,53 +147,43 @@ describe("User tests", function () {
done();
})
})
//soon to be delete and replace with real backend
it("successfully post message", function(){

let message = {
code: "food",
relationshipPoint : 0,
payload : {}
}

chai
.request(app)
.post("/messages")
.set({authorization: token})
.send(message)
.end(function(err,res){
expect(err).to.be.null;
expect(res).to.have.status(200);
expect(res.body).to.be.an("object")
expect(res.body.message).to.equal("success")
})
})
it("should get 401 passing data without token", function(){
let message = {
code: "food",
relationshipPoint : 0,
payload : {}
}
chai
.request(app)
.post("/messages")
.send(message)
.end(function(err,res){
expect(err).to.be.null;
expect(res).to.have.status(401);
})
})

});
// describe("POST /users/logout", function(){
// it("Success Logout", function(done){
// chai
// .request(app)
// .post("/users/logout")
// .set({authorization: token})
// .end(function(err,res){
// console.log(JSON.stringify(res.body,null,3))
// expect(err).to.be.null;
// expect(res).to.have.status(200);
// expect(res.body).to.be.an("object")
// expect(res.body.message).to.equal("Successfully logout");
// expect(res.body).to.have.all.keys("message","accountType")
// done();
// })
// })
// it("Logout Failed: not authenticated status 403", function(done){
// chai
// .request(app)
// .post("/users/logout")
// .end(function(err,res){
// console.log(JSON.stringify(res.body,null,3))
// expect(err).to.be.null;
// expect(res).to.have.status(403);
// expect(res.body).to.be.an("object")
// expect(res.body.message).to.equal("Token is undefined")
// expect(res.body).to.have.all.keys('error','message',"source","statusCode");
// done();
// })
// })
// })
// describe("GET /users/profile", function(){
// it("Get Profile with status 200", function(done){
// chai
// .request(app)
// .get("/users/profile")
// .set({authorization:token})
// .end(function(err,res){
// console.log(JSON.stringify(res.body,null,3))
// expect(err).to.be.null;
// expect(res).to.have.status(200)
// expect(res.body).to.be.an("object")
// expect(res.body).to.have.all.keys("imageUrl", "accountType","name","hackpay","role")
// done()
// })
// })
// })

});