api tests

This commit is contained in:
RonanCraft
2024-03-30 23:03:05 -04:00
parent 39708dddc4
commit 93666bb991
8 changed files with 3876 additions and 8 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,12 +4,16 @@
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "jest"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.19.2"
},
"devDependencies": {
"jest": "^29.7.0",
"supertest": "^6.3.4"
}
}

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BetterRTP - Routes</title>
</head>
<body>
<p>BetterRTP API Routes coming soon!</p>
</body>
<script src="index.js"></script>
</html>

31
NodeServer/routes/app.js Normal file
View File

@@ -0,0 +1,31 @@
const express = require("express");
const path = require("path");
const app = express();
const api = require("./index.js");
//Middleware
//Allows to send json body
app.use(express.json());
// app.use((req, red, next) => {
// const yellow = "\x1b[33m%s\x1b[0m";
// // Log out the request type and resource
// console.log(yellow, `${req.method} request to ${req.path}`);
// next();
// });
app.use(express.static("public"));
//Routes
//Send all requests starting with /api to index.js to routes folder
app.use("/api", api);
//https://localhost route to default page
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "/public/index.html"));
});
module.exports = app;

View File

@@ -0,0 +1,12 @@
const router = require("express").Router();
const path = require("path");
const rtp = require("./rtp");
router.use("/rtp", rtp);
router.get("/", (req, res) => {
res.sendFile(path(__dirname, "../public/api/index.html"));
});
module.exports = router;

28
NodeServer/routes/rtp.js Normal file
View File

@@ -0,0 +1,28 @@
const rtpdata = require("express").Router();
rtpdata.post("/", (req, res) => {
const validate = () =>
new Promise((resolve, reject) => {
const json = req.body;
if (json !== undefined) {
resolve(json);
} else {
reject(new Error("No Json"));
}
});
validate()
.then((data) => {
console.log("Validate:", data);
res.json({
added: true,
});
})
.catch((err) => {
console.log("Error:", err);
res.json({
added: false,
});
});
});
module.exports = rtpdata;

View File

@@ -1,14 +1,9 @@
const express = require("express");
const path = require("path");
const app = express();
const app = require("./routes/app.js");
const port = 3001;
app.use(express.static("public"));
app.get("/api/servers", (req, res) => {
res.send("Test");
});
app.listen(port, () => {
console.log(`BetterRTP Server online at http://localhost:${port}`);
});

View File

@@ -0,0 +1,25 @@
const request = require("supertest");
const app = require("../routes/app.js");
describe("GET /api", () => {
it("responds with html file", async () => {
const res = await request(app).get("/api");
// console.log(res.header);
expect(res.header["content-type"]).toBe("text/html; charset=UTF-8");
});
});
describe("POST /api/rtp", () => {
it("responds with json and `added = false`", async () => {
const res = await request(app).post("/api/rtp");
expect(res.header["content-type"]).toBe("application/json; charset=utf-8");
expect(res.body.added).toBe(false);
});
it("responds with json and `added = true`", async () => {
const res = await request(app).post("/api/rtp").send({
playerId: "test123",
});
expect(res.header["content-type"]).toBe("application/json; charset=utf-8");
expect(res.body.added).toBe(true);
});
});