Merge development (#13)

* Added direct join functionality

* Completed CreateUser test suite

* Removed non-essential imports

* Reordered test functions

* Login test suite completed

* Completed Logout test suite

* Completed RequestReset test suite

* Completed ResetPassword test suite

* Completed UpdateUserDetails test suite

* Completed SetAudio test suite

* Fixed UpdateUserDetials suite

* GetUserDetails test suite complete

* Completed ResetPassword test suite

* Completed GetMemberOrgs test suite

* Completed GetOwnedOrgs test suite

* AddOrgMember test suite added

* Created CreateOrg test suite

* Modified AddOrgMember suite

* Delete Org test suite completed

* Completed GetOrg test suite

* Completed RemoveOrgMember test suite

* Completed UpdateOrgDetails test suite

* Changed oackage,json files

* Switched project over to workspaces

* Test build script completed

* Fixed config.json missing on workflow run

* Completed test-build.js.yml

* Completed test-build.js.yml

* Completed test-build.js.yml

* Test build completed

* Completed test-build.js.yml

* Added touch server

* Touched test-build.js.yml

* Reworked workflows and automated test suite (#7)

Reworked workflows and automated test suite (#7)

* Configured new js file and isolated database files in db folder (#10)

* Changed config.js and isolated db

* Configured new js file and isolated database files in db folder

* Removed .env files from config (#11)
This commit is contained in:
Ceferino Patino 2022-03-30 14:59:11 -05:00 committed by GitHub
commit 1b9b8db04d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 71 additions and 68 deletions

View file

@ -6,6 +6,7 @@ name: Build release assets
on: on:
push: push:
branches: [main] branches: [main]
workflow_dispatch:
jobs: jobs:
build: build:
@ -18,12 +19,6 @@ jobs:
env: env:
DOTENV: '${{ secrets.DOTENV }}' DOTENV: '${{ secrets.DOTENV }}'
run: echo "$DOTENV" >> .env run: echo "$DOTENV" >> .env
- name: Write config.json to config
env:
CONFIG_JSON: '${{ secrets.CONFIG_JSON }}'
run: |
mkdir ./server/config
echo "$CONFIG_JSON" >> ./server/config/config.json
- name: Use Node.js 16.x - name: Use Node.js 16.x
uses: actions/setup-node@v2 uses: actions/setup-node@v2
with: with:

View file

@ -20,12 +20,6 @@ jobs:
env: env:
DOTENV: '${{ secrets.DOTENV }}' DOTENV: '${{ secrets.DOTENV }}'
run: echo "$DOTENV" >> .env run: echo "$DOTENV" >> .env
- name: Write config.json to config
env:
CONFIG_JSON: '${{ secrets.CONFIG_JSON }}'
run: |
mkdir ./server/config
echo "$CONFIG_JSON" >> ./server/config/config.json
- name: Use Node.js 16.x - name: Use Node.js 16.x
uses: actions/setup-node@v2 uses: actions/setup-node@v2
with: with:

1
.gitignore vendored
View file

@ -12,7 +12,6 @@ TODO
### Sqlite ### ### Sqlite ###
*.sqlite3 *.sqlite3
**/config/
### Git ### ### Git ###
# Created by git for backups. To disable backups in Git: # Created by git for backups. To disable backups in Git:

8
.sequelizerc Normal file
View file

@ -0,0 +1,8 @@
const path = require('path');
module.exports = {
config: path.resolve('server', 'db', 'config', 'config.js'),
'models-path': path.resolve('server', 'db', 'models'),
'seeders-path': path.resolve('server', 'db', 'seeders'),
'migrations-path': path.resolve('server', 'db', 'migrations'),
};

View file

@ -10,8 +10,9 @@
"dev": "npm run server", "dev": "npm run server",
"dist": "npm run package", "dist": "npm run package",
"test": "npm run test -w server", "test": "npm run test -w server",
"env": "npm run env --ws && touch test_db.sqlite3", "env": "npm run env --ws && touch db.sqlite3",
"package": "tar -czf ./dist.tar.gz ./.github ./.vscode ./client ./node_modules ./server .env .gitignore LICENSE package-lock.json package.json README.md", "package": "tar -czf ./dist.tar.gz ./.github ./.vscode ./client ./node_modules ./server .env .gitignore LICENSE package-lock.json package.json README.md",
"pretest": "npm run env",
"predev": "npm run build", "predev": "npm run build",
"predist": "npm ci && npm run build", "predist": "npm ci && npm run build",
"prebuild": "npm run env" "prebuild": "npm run env"

View file

@ -15,7 +15,7 @@ var app = express();
app.set('views', path.join(__dirname, 'views')); app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade'); app.set('view engine', 'jade');
if (process.env.LOGGER == 'true') { if (process.env.NODE_ENV != 'test') {
app.use(logger('dev')); app.use(logger('dev'));
} }
app.use(express.json()); app.use(express.json());

View file

@ -3,12 +3,12 @@
/** /**
* Module dependencies. * Module dependencies.
*/ */
var app = require('../app');
var debug = require('debug')('server:server'); var debug = require('debug')('server:server');
var http = require('http'); var http = require('http');
require('dotenv').config(); require('dotenv').config();
var { sequelize } = require('../models/index'); var app = require('../app');
var { sequelize } = require('../db/models/index');
/** /**
* Get port from environment and store in Express. * Get port from environment and store in Express.

View file

@ -0,0 +1,17 @@
module.exports = {
production: {
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
dialect: 'mysql',
},
test: {
dialect: 'sqlite',
storage: '../../db.sqlite3',
},
development: {
dialect: 'sqlite',
storage: '../../db.sqlite3',
},
};

View file

@ -4,7 +4,7 @@ const path = require('path');
const Sequelize = require('sequelize'); const Sequelize = require('sequelize');
const basename = path.basename(__filename); const basename = path.basename(__filename);
const env = process.env.NODE_ENV; const env = process.env.NODE_ENV;
const config = require(__dirname + '/../config/config.json')[env]; const config = require('../config/config')[env];
const db = {}; const db = {};
const sequelize = new Sequelize({ const sequelize = new Sequelize({

View file

@ -1,5 +1,5 @@
const forge = require('node-forge'); const forge = require('node-forge');
const { User } = require('../models/index'); const { User } = require('../db/models/index');
async function basicAuth(req, res, next) { async function basicAuth(req, res, next) {
const email = req.body.email; const email = req.body.email;

View file

@ -1,4 +1,4 @@
const { Organization } = require('../models/index'); const { Organization } = require('../db/models/index');
async function GetOrg(req, res, next) { async function GetOrg(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { User } = require('../models/index'); const { User } = require('../db/models/index');
async function checkKnownUser(req, res, next) { async function checkKnownUser(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { Token } = require('../models/index'); const { Token } = require('../db/models/index');
async function tokenAuth(req, res, next) { async function tokenAuth(req, res, next) {
const token = req.query.token || req.body.token; const token = req.query.token || req.body.token;

View file

@ -4,7 +4,11 @@
"private": true, "private": true,
"scripts": { "scripts": {
"start": "nodemon ./bin/www", "start": "nodemon ./bin/www",
<<<<<<< HEAD
"test": "jest -i",
=======
"test": "jest -i --verbose --detectOpenHandles", "test": "jest -i --verbose --detectOpenHandles",
>>>>>>> origin/main
"env": "cp ../.env .env" "env": "cp ../.env .env"
}, },
"dependencies": { "dependencies": {
@ -29,5 +33,8 @@
"jest": "^27.5.1", "jest": "^27.5.1",
"nodemon": "^2.0.15", "nodemon": "^2.0.15",
"supertest": "^6.2.2" "supertest": "^6.2.2"
},
"jest": {
"slowTestThreshold": 10
} }
} }

View file

@ -1,5 +1,5 @@
const forge = require('node-forge'); const forge = require('node-forge');
const { User, Organization } = require('../../models/index'); const { User, Organization } = require('../../db/models/index');
async function CreateUser(req, res, next) { async function CreateUser(req, res, next) {
const body = req.body; const body = req.body;

View file

@ -1,4 +1,4 @@
const { User } = require('../../models/index'); const { User } = require('../../db/models/index');
async function GetUserDetails(req, res, next) { async function GetUserDetails(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { Token } = require('../../models/index'); const { Token } = require('../../db/models/index');
async function Login(req, res, next) { async function Login(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,7 +1,7 @@
const { v4: uuidv4 } = require('uuid');
const { CourierClient } = require('@trycourier/courier'); const { CourierClient } = require('@trycourier/courier');
require('dotenv').config();
const { User, ResetRequest } = require('../../models/index'); const { User, ResetRequest } = require('../../db/models/index');
async function RequestReset(req, res, next) { async function RequestReset(req, res, next) {
try { try {
@ -15,8 +15,6 @@ async function RequestReset(req, res, next) {
return res.status(500).send('Whoops something went wrong'); return res.status(500).send('Whoops something went wrong');
} }
console.log(process.env.COURIER_AUTH_TOKEN);
const courier = CourierClient({ const courier = CourierClient({
authorizationToken: process.env.COURIER_AUTH_TOKEN, authorizationToken: process.env.COURIER_AUTH_TOKEN,
}); });

View file

@ -1,5 +1,5 @@
const forge = require('node-forge'); const forge = require('node-forge');
const { ResetRequest } = require('../../models/index'); const { ResetRequest } = require('../../db/models/index');
async function ResetPassword(req, res, next) { async function ResetPassword(req, res, next) {
reqID = req.params.id; reqID = req.params.id;

View file

@ -1,5 +1,5 @@
const { Op } = require('sequelize'); const { Op } = require('sequelize');
const { User } = require('../../models/index'); const { User } = require('../../db/models/index');
async function UpdateUserDetails(req, res, next) { async function UpdateUserDetails(req, res, next) {
const { token, ...body } = req.body; const { token, ...body } = req.body;

View file

@ -1,4 +1,4 @@
const { Organization } = require('../../models/index'); const { Organization } = require('../../db/models/index');
async function AddOrgMember(req, res, next) { async function AddOrgMember(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { Organization } = require('../../models/index'); const { Organization } = require('../../db/models/index');
async function DeleteOrg(req, res, next) { async function DeleteOrg(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { Organization } = require('../../models/index'); const { Organization } = require('../../db/models/index');
async function GetOrg(req, res, next) { async function GetOrg(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,4 +1,4 @@
const { Organization } = require('../../models/index'); const { Organization } = require('../../db/models/index');
async function RemoveOrgMember(req, res, next) { async function RemoveOrgMember(req, res, next) {
const user = req.user; const user = req.user;

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Organization } = require('../../models/index'); var { sequelize, Organization } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser, createTestOrg } = require('../utils'); const { createTestUser, createTestOrg } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestOrg, createTestUser } = require('../utils'); const { createTestOrg, createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Token } = require('../../models/index'); var { sequelize, Token } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser } = require('../utils'); const { createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Token } = require('../../models/index'); var { sequelize, Token } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestToken, createTestUser } = require('../utils'); const { createTestToken, createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Token } = require('../../models/index'); var { sequelize, Token } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser } = require('../utils'); const { createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Token } = require('../../models/index'); var { sequelize, Token } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestToken } = require('../utils'); const { createTestToken } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser } = require('../utils'); const { createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestResetRequest } = require('../utils'); const { createTestResetRequest } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
describe('SetAudio', function () { describe('SetAudio', function () {

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestToken, createTestUser } = require('../utils'); const { createTestToken, createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestOrg, createTestUser, createTestToken } = require('../utils'); const { createTestOrg, createTestUser, createTestToken } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Token } = require('../../models/index'); var { sequelize, Token } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser } = require('../utils'); const { createTestUser } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Organization } = require('../../models/index'); var { sequelize, Organization } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser, createTestOrg } = require('../utils'); const { createTestUser, createTestOrg } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Organization } = require('../../models/index'); var { sequelize, Organization } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser, createTestOrg } = require('../utils'); const { createTestUser, createTestOrg } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize } = require('../../models/index'); var { sequelize } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser, createTestOrg } = require('../utils'); const { createTestUser, createTestOrg } = require('../utils');

View file

@ -1,7 +1,6 @@
require('dotenv').config();
const supertest = require('supertest'); const supertest = require('supertest');
var { sequelize, Organization } = require('../../models/index'); var { sequelize, Organization } = require('../../db/models/index');
const app = require('../../app'); const app = require('../../app');
const { createTestUser, createTestOrg, createTestToken } = require('../utils'); const { createTestUser, createTestOrg, createTestToken } = require('../utils');

View file

@ -1,5 +1,5 @@
const forge = require('node-forge'); const forge = require('node-forge');
const { User, Organization } = require('../models/index'); const { User, Organization } = require('../db/models/index');
async function createTestUser(firstName, lastName, password) { async function createTestUser(firstName, lastName, password) {
const hashedPassword = forge.md.sha512 const hashedPassword = forge.md.sha512