-
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(core): add changelog releases routes ✨
- Loading branch information
1 parent
893256a
commit 57d9faf
Showing
8 changed files
with
247 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/** | ||
* Module dependencies | ||
*/ | ||
const path = require('path'); | ||
|
||
const errors = require(path.resolve('./lib/helpers/errors')); | ||
const responses = require(path.resolve('./lib/helpers/responses')); | ||
|
||
const CoreService = require('../services/core.service'); | ||
|
||
/** | ||
* @desc Endpoint to ask the service to get the releases | ||
* @param {Object} req - Express request object | ||
* @param {Object} res - Express response object | ||
*/ | ||
exports.releases = async (req, res) => { | ||
try { | ||
const releases = await CoreService.releases(); | ||
responses.success(res, 'releases')(releases); | ||
} catch (err) { | ||
responses.error(res, 422, 'Unprocessable Entity', errors.getMessage(err))(err); | ||
} | ||
}; | ||
|
||
/** | ||
* @desc Endpoint to ask the service to get the changelogs | ||
* @param {Object} req - Express request object | ||
* @param {Object} res - Express response object | ||
*/ | ||
exports.changelogs = async (req, res) => { | ||
try { | ||
const changelogs = await CoreService.changelogs(); | ||
responses.success(res, 'changelogs')(changelogs); | ||
} catch (err) { | ||
responses.error(res, 422, 'Unprocessable Entity', errors.getMessage(err))(err); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/** | ||
* Module dependencies | ||
* */ | ||
const path = require('path'); | ||
|
||
const policy = require(path.resolve('./lib/middlewares/policy')); | ||
|
||
/** | ||
* Invoke Tasks Permissions | ||
*/ | ||
exports.invokeRolesPolicies = () => { | ||
policy.Acl.allow([{ | ||
roles: ['guest'], | ||
allows: [{ | ||
resources: '/api/core/releases', | ||
permissions: ['get'], | ||
}, { | ||
resources: '/api/core/changelogs', | ||
permissions: ['get'], | ||
}], | ||
}]); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/** | ||
* Module dependencies | ||
*/ | ||
const path = require('path'); | ||
|
||
const policy = require(path.resolve('./lib/middlewares/policy')); | ||
const core = require('../controllers/core.controller'); | ||
|
||
/** | ||
* Routes | ||
*/ | ||
module.exports = (app) => { | ||
// changelogs | ||
app.route('/api/core/releases').all(policy.isAllowed) | ||
.get(core.releases); | ||
// changelogs | ||
app.route('/api/core/changelogs').all(policy.isAllowed) | ||
.get(core.changelogs); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
/** | ||
* Module dependencies | ||
*/ | ||
const axios = require('axios'); | ||
const path = require('path'); | ||
|
||
const config = require(path.resolve('./config')); | ||
/** | ||
* @desc Function to get all versions | ||
* @return {Promise} All versions | ||
*/ | ||
exports.releases = async () => { | ||
const requests = config.repos.map((item) => axios.get(`https://api.github.com/repos/${item.owner}/${item.repo}/releases`, { | ||
headers: item.token ? { Authorization: `token ${item.token}` } : {}, | ||
})); | ||
let results = await axios.all(requests); | ||
results = results.map((result, i) => ({ | ||
title: config.repos[i].title, | ||
list: result.data.map((release) => ({ | ||
name: release.name, | ||
prerelease: release.prerelease, | ||
published_at: release.published_at, | ||
})), | ||
})); | ||
return Promise.resolve(results); | ||
}; | ||
|
||
/** | ||
* @desc Function to get all changelogs | ||
* @return {Promise} All changelogs | ||
*/ | ||
exports.changelogs = async () => { | ||
const requests = config.repos.map((item) => axios.get(`https://api.github.com/repos/${item.owner}/${item.repo}/contents/${item.changelog}`, { | ||
headers: item.token ? { Authorization: `token ${item.token}` } : {}, | ||
})); | ||
let results = await axios.all(requests); | ||
results = results.map((result, i) => ({ | ||
title: config.repos[i].title, | ||
data: { | ||
type: result.data.type, | ||
size: result.data.size, | ||
encoding: result.data.encoding, | ||
content: result.data.content, | ||
}, | ||
})); | ||
return Promise.resolve(results); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/** | ||
* Module dependencies. | ||
*/ | ||
const request = require('supertest'); | ||
const path = require('path'); | ||
|
||
const express = require(path.resolve('./lib/services/express')); | ||
const mongooseService = require(path.resolve('./lib/services/mongoose')); | ||
const multerService = require(path.resolve('./lib/services/multer')); | ||
|
||
/** | ||
* Unit tests | ||
*/ | ||
describe('Tasks CRUD Tests :', () => { | ||
let app; | ||
let agent; | ||
|
||
// init | ||
beforeAll(async () => { | ||
try { | ||
// init mongo | ||
await mongooseService.connect(); | ||
await multerService.storage(); | ||
await mongooseService.loadModels(); | ||
// init application | ||
app = express.init(); | ||
agent = request.agent(app); | ||
} catch (err) { | ||
console.log(err); | ||
} | ||
}); | ||
|
||
describe('Logout', () => { | ||
test('should not be able to save a task', async () => { | ||
try { | ||
const result = await agent.get('/api/core/releases') | ||
.expect(200); | ||
expect(result.body.type).toBe('success'); | ||
expect(result.body.message).toBe('releases'); | ||
expect(result.body.data).toBeInstanceOf(Array); | ||
} catch (err) { | ||
expect(err).toBeFalsy(); | ||
console.log(err); | ||
} | ||
}); | ||
|
||
test('should not be able to save a task', async () => { | ||
try { | ||
const result = await agent.get('/api/core/changelogs') | ||
.expect(200); | ||
expect(result.body.type).toBe('success'); | ||
expect(result.body.message).toBe('changelogs'); | ||
expect(result.body.data).toBeInstanceOf(Array); | ||
} catch (err) { | ||
expect(err).toBeFalsy(); | ||
console.log(err); | ||
} | ||
}); | ||
}); | ||
|
||
// Mongoose disconnect | ||
afterAll(async () => { | ||
try { | ||
await mongooseService.disconnect(); | ||
} catch (err) { | ||
console.log(err); | ||
} | ||
}); | ||
}); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters