This commit is contained in:
Filip Rojek 2024-04-30 00:50:27 +02:00
parent ff8cc4cccf
commit dc1b955a8a
6 changed files with 90 additions and 11 deletions

View File

@ -13,7 +13,7 @@
"clean": "rimraf dist", "clean": "rimraf dist",
"copy-assets": "ts-node src/utils/copyAssets", "copy-assets": "ts-node src/utils/copyAssets",
"build": "npm-run-all clean tsc copy-assets", "build": "npm-run-all clean tsc copy-assets",
"test": "mocha --config .mocharc.json --watch src/**/*.test.ts", "test": "npx jest . --runInBand",
"format": "npx prettier --write ." "format": "npx prettier --write ."
}, },
"author": "Filip Rojek", "author": "Filip Rojek",
@ -29,33 +29,38 @@
"path": "^0.12.7" "path": "^0.12.7"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.7.1",
"@types/chai": "^4.2.22", "@types/chai": "^4.2.22",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
"@types/fs-extra": "^9.0.13", "@types/fs-extra": "^9.0.13",
"@types/inquirer": "^8.1.3", "@types/inquirer": "^8.1.3",
"@types/jest": "^29.5.12",
"@types/mocha": "^9.0.0", "@types/mocha": "^9.0.0",
"@types/morgan": "^1.9.9", "@types/morgan": "^1.9.9",
"@types/shelljs": "^0.8.11", "@types/shelljs": "^0.8.11",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^5.5.0", "@typescript-eslint/eslint-plugin": "^5.5.0",
"@typescript-eslint/parser": "^5.5.0", "@typescript-eslint/parser": "^5.5.0",
"chai": "^4.3.4", "chai": "^4.3.4",
"eslint": "^8.3.0", "eslint": "^8.3.0",
"http": "^0.0.1-security", "http": "^0.0.1-security",
"jest": "^29.7.0",
"mocha": "^9.1.3", "mocha": "^9.1.3",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"shelljs": "^0.8.5", "shelljs": "^0.8.5",
"supertest": "^7.0.0",
"ts-jest": "^29.1.2",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"tsx": "^4.7.3", "tsx": "^4.7.3",
"typescript": "^4.5.2" "typescript": "^4.5.2"
}, },
"repository": { "jest": {
"type": "git", "preset": "ts-jest",
"url": "git+https://github.com/filiprojek/nork.git" "testEnvironment": "node",
}, "setupFilesAfterEnv": [
"bugs": { "./tests/_setupFile.ts"
"url": "https://github.com/filiprojek/nork/issues" ]
}, }
"homepage": "https://github.com/filiprojek/nork/blob/master/README.md"
} }

View File

@ -1,5 +1,5 @@
import { Request, Response } from "express"; import { Request, Response } from "express";
export function login_post(req: Request, res: Response) { export function signup_post(req: Request, res: Response) {
res.send("logged in"); res.send("logged in");
} }

View File

@ -8,7 +8,7 @@ const router = Router();
//const mws = [requireAuth, handleValidation.handleValidationError]; //const mws = [requireAuth, handleValidation.handleValidationError];
router.post("/login", authController.login_post); router.post("/signup", authController.signup_post);
//router.post( //router.post(
// "/login", // "/login",

View File

@ -0,0 +1,48 @@
import { Sequelize } from 'sequelize';
let sequelize: Sequelize | null = null;
const connectDB = async () => {
sequelize = new Sequelize({
dialect: 'mariadb',
host: 'localhost',
username: 'your_username',
password: 'your_password',
database: 'your_database',
});
try {
await sequelize.authenticate();
console.log('Connection to the database has been established successfully.');
} catch (error) {
console.error('Unable to connect to the database:', error);
}
};
const dropDB = async () => {
if (sequelize) {
try {
await sequelize.drop();
console.log('Database dropped successfully.');
} catch (error) {
console.error('Error dropping database:', error);
} finally {
await sequelize.close();
}
}
};
const dropTables = async () => {
if (sequelize) {
try {
await sequelize.sync({ force: true });
console.log('All tables dropped successfully.');
} catch (error) {
console.error('Error dropping tables:', error);
} finally {
await sequelize.close();
}
}
};
export { connectDB, dropDB, dropTables };

9
api/tests/_setupFile.ts Normal file
View File

@ -0,0 +1,9 @@
import { connectDB, dropDB, dropCollections } from '../src/utils/test_mongodb';
beforeAll(async () => {
await connectDB();
});
afterAll(async () => {
await dropDB();
});

17
api/tests/auth.test.ts Normal file
View File

@ -0,0 +1,17 @@
import request from "supertest"
import {server as app} from "../server"
describe('Auth API Endpoints', () => {
afterAll((done) => {
app.close(done);
})
it('should signup new user', async () => {
const res = await request(app)
.post('/api/auth/signup')
.send({});
expect(res.statusCode).toEqual(200)
})
})