Skip to content

Commit

Permalink
[chore #166978014] Testing All endpoints on heroku
Browse files Browse the repository at this point in the history
  • Loading branch information
UhiriweAudace committed Aug 11, 2019
1 parent 0723eb2 commit 03f0214
Show file tree
Hide file tree
Showing 13 changed files with 270 additions and 388 deletions.
2 changes: 1 addition & 1 deletion Procfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
web: NODE_ENV=staging yarn start
web: NODE_ENV=staging yarn start
2 changes: 1 addition & 1 deletion src/api/controllers/articlesController.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class articlesController {
const allArticle = await articles.getAllArticle();

if (!allArticle[0]) {
return res.status(404).send({ error: 'Whoops! No Articles found!' });
return res.status(200).send({ message: 'Whoops! No Articles found!' });
}
res.status(200).send({
articles: allArticle
Expand Down
2 changes: 1 addition & 1 deletion src/api/controllers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ class AuthController {

return res.status(404).send({
status: 404,
data: { message: 'User with that email in not exist' }
data: { message: 'User with that email does not exist!' }
});
});
}
Expand Down
53 changes: 16 additions & 37 deletions src/api/controllers/socialLogin.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable no-undef */
/* eslint-disable no-unused-vars */
import models from '../../sequelize/models';
import tokenGeneration from '../../helpers/Token.helper';

Expand All @@ -8,24 +10,17 @@ const userInfo = {
firstName: req.user.name.givenName,
lastName: req.user.name.familyName,
email: req.user.emails[0].value,
image: req.user.photos[0].value,
avatar: req.user.photos[0].value,
provider: req.user.provider,
verified: req.user.emails[0].verified,
socialId: req.user.id,
socialId: req.user.id
});
if (newUser) {
const {
dataValues: {
id, firstName, lastName, email, provider
}
dataValues: { username }
} = newUser;
const token = await tokenGeneration.generateToken(newUser.dataValues);
return res.status(200).json({
message: `Welcome to Authors Haven ${displayName} `,
data: {
token, id, firstName, lastName, email, provider
},
});
return res.redirect(`${process.env.APP_URL_FRONTEND}/?token=${token}&username=${username}`);
}
},
async facebookLogin(req, res) {
Expand All @@ -35,54 +30,38 @@ const userInfo = {
firstName: names[0],
lastName: names[1],
email: req.user.emails[0].value,
image: req.user.photos[0].value,
avatar: req.user.photos[0].value,
provider: req.user.provider,
verified: true,
socialId: req.user.id,
socialId: req.user.id
});
if (newUser) {
const {
dataValues: {
id, firstName, lastName, email, provider
}
dataValues: { username }
} = newUser;
const token = await tokenGeneration.generateToken(newUser.dataValues);
return res.status(200).json({
message: `Welcome to Authors Haven ${displayName} `,
data: {
token, id, firstName, lastName, email, provider
},
});
return res.redirect(`${process.env.APP_URL_FRONTEND}/?token=${token}&username=${username}`);
}
},
async twitterLogin(req, res) {
const {
displayName
} = req.user;
const { displayName } = req.user;
const names = displayName.split(' ');
const newUser = await models.User.create({
firstName: names[0],
lastName: names[1],
username: req.user.username,
image: req.user.photos[0].value,
avatar: req.user.photos[0].value,
provider: req.user.provider,
verified: true,
socialId: req.user.id,
socialId: req.user.id
});
if (newUser) {
const {
dataValues: {
id, firstName, lastName, email, provider
}
dataValues: { username }
} = newUser;
const token = await tokenGeneration.generateToken(newUser.dataValues);
return res.status(200).json({
message: `Welcome to Authors Haven ${displayName} `,
data: {
token, id, firstName, lastName, email, provider
},
});
return res.redirect(`${process.env.APP_URL_FRONTEND}/?token=${token}&username=${username}`);
}
},
}
};
export default userInfo;
48 changes: 26 additions & 22 deletions src/config/passportSetup.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,32 @@ import dotenv from 'dotenv';

dotenv.config();

passport.use(new GoogleStrategy(
{
clientID: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET,
includeEmail: true,
callbackURL: '/api/auth/login/google/redirect'
},
(accessToken, refreshToken, profile, done) => {
done(null, profile);
}
));
passport.use(new FacebookStrategy(
{
clientID: process.env.FCBK_ID,
clientSecret: process.env.FCBK_APP_SECRET,
callbackURL: '/api/auth/login/facebook/redirect',
profileFields: ['id', 'displayName', 'photos', 'email']
},
(accessToken, refreshToken, profile, done) => {
done(null, profile);
}
));
passport.use(
new GoogleStrategy(
{
clientID: process.env.GOOGLE_ID,
clientSecret: process.env.GOOGLE_SECRET,
includeEmail: true,
callbackURL: `${process.env.BASE_URL}/api/auth/login/google/redirect`
},
(accessToken, refreshToken, profile, done) => {
done(null, profile);
}
)
);
passport.use(
new FacebookStrategy(
{
clientID: process.env.FCBK_ID,
clientSecret: process.env.FCBK_APP_SECRET,
callbackURL: `${process.env.BASE_URL}/api/auth/login/facebook/redirect`,
profileFields: ['id', 'displayName', 'photos', 'email']
},
(accessToken, refreshToken, profile, done) => {
done(null, profile);
}
)
);
passport.use(
new TwitterTokenStrategy(
{
Expand Down
73 changes: 36 additions & 37 deletions src/helpers/emailTemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,44 @@
* @description Authentication based class
* */
class Template {
/**
* Verify token middleware
* @param {String} firstname - Request
* @param {String} lastname - Response
* @param {String} token -EmailTemplate
* @returns {String} The response String
*/
/**
* Verify token middleware
* @param {String} firstname - Request
* @param {String} lastname - Response
* @param {String} token -EmailTemplate
* @returns {String} The response String
*/
static getPasswordResetTemplete(firstname, lastname, token) {
return `
<div style="background:#e5eeff;width:100%;padding:20px 0;">
<div style="max-width:760px;margin:0 auto;background:#ffffff">
<div style="background:#303346;padding:10px;color:#ffffff;text-align:center;font-size:34px">
Authors Haven
</div>
<div style="padding:20px;text-align:left;">
<p>
<h2>Hi ${firstname} ${lastname} </h2></br>
You Recently requested a password reset for your Authors Haven Account, Click the the Button below
to reset it.</br>
<form action="${token}">
<button style="background:#303346;padding:10px; outline: none; border:0; border-radius:10px; margin:5px;color:#ffffff;text-align:center;font-size:13px">Reset your Password</button>
</form>
</br>
If you did not request a password reset please ignore this email or reply to let us know.
This link will be expired in next 10 minutes.
</p>
<a href="https://andela.com">Visit Andela's website</a>
</div>
<br>
<div style="padding:20px;text-align:left;">
<b>Authors Haven</b>
</div>
</div>
<div style="padding:35px 10px;text-align:center;">
Copyright, 2019<br>
Authors Haven
</div>
</div>
`;
<div style="background:#e5eeff;width:100%;padding:20px 0;">
<div style="max-width:760px;margin:0 auto;background:#ffffff">
<div style="background:#303346;padding:10px;color:#ffffff;text-align:center;font-size:34px">
Authors Haven
</div>
<div style="padding:20px;text-align:left;">
<p>
<h2>Hi ${firstname} ${lastname} </h2></br>
<form action="${token}">
You Recently requested a password reset for your Authors Haven Account,
<a href="${process.env.FRONTEND_URL}/resetPassword/?token=${token}">Click this link</a> to reset it.
</form>
</br>
If you did not request a password reset please ignore this email or reply to let us know.
This link will be expired in next 10 minutes.
</p>
<a href="https://andela.com">Visit Andela's website</a>
</div>
<br>
<div style="padding:20px;text-align:left;">
<b>Authors Haven</b>
</div>
</div>
<div style="padding:35px 10px;text-align:center;">
Copyright, 2019<br>
Authors Haven
</div>
</div>
`;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/helpers/emailVerifyTemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Template {
Well ${names}, congratulations for choosing AuthorsHaven.
To verify that ${to} is your email, could you please click this link below to verify your AuthorsHaven's account?
<br/>
<a href="${process.env.BASE_URL}/api/auth/verify/?token=${token}">Click here to verify your account</a>
<a href="${process.env.FRONTEND_URL}/verify/${token}">Click here to verify your account</a>
<br/>
Here there is the link below where you can visit Andela and get more information about what's Andela
Expand Down
7 changes: 7 additions & 0 deletions src/middleware/globalMiddleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ export default (app) => {
.use(bodyParser.urlencoded({ extended: true }))
// Allow cross origin requests
.use(cors());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, OPTIONS, POST, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, token');
res.header('Access-Control-Allow-Credentials', true);
return next();
});
if (process.env.NODE_ENV !== 'test') {
app.use(morgan('dev'));
}
Expand Down
32 changes: 5 additions & 27 deletions src/middleware/socialAccountExists.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import tokenGeneration from '../helpers/Token.helper';

const userExists = {
async google(req, res, next) {
const { emails, displayName } = req.user;
const { emails } = req.user;
const currentUser = await models.User.findAll({
where: {
email: emails[0].value,
Expand All @@ -12,25 +12,13 @@ const userExists = {
if (currentUser.length > 0) {
const token = await tokenGeneration.generateToken(currentUser[0].dataValues);
const {
id, firstName, lastName, email, socialId, provider
username
} = currentUser[0].dataValues;
return res.status(200).json({
message: `Welcome to Authors Haven ${displayName} `,
data: {
token,
id,
firstName,
lastName,
email,
socialId,
provider
},
});
return res.redirect(`${process.env.APP_URL_FRONTEND}/?token=${token}&username=${username}`);
}
next();
},
async twitter(req, res, next) {
const { displayName } = req.user;
const currentUser = await models.User.findAll({
where: {
socialId: req.user.id,
Expand All @@ -39,19 +27,9 @@ const userExists = {
if (currentUser.length > 0) {
const token = await tokenGeneration.generateToken(currentUser[0].dataValues);
const {
id, firstName, lastName, socialId, provider
username
} = currentUser[0].dataValues;
return res.status(200).json({
message: `Welcome to Authors Haven ${displayName} `,
data: {
token,
id,
firstName,
lastName,
socialId,
provider,
},
});
return res.redirect(`${process.env.APP_URL_FRONTEND}/?token=${token}&username=${username}`);
}
next();
},
Expand Down
2 changes: 1 addition & 1 deletion src/middleware/validateBody.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const validateBody = schema => (req, res, next) => {
});
return res.status(400).send({
status: 400,
data: { message: allErrors },
message: allErrors[0]
});
}
}
Expand Down
Loading

0 comments on commit 03f0214

Please sign in to comment.