113 lines
2.9 KiB
JavaScript
113 lines
2.9 KiB
JavaScript
// Direct backend test - bypassing Nginx
|
||
const http = require("http");
|
||
|
||
const testDirectBackend = async () => {
|
||
console.log("Testing backend directly on localhost:8080...\n");
|
||
|
||
// Step 1: Login
|
||
const token = await login();
|
||
if (!token) {
|
||
console.log("❌ Failed to login");
|
||
return;
|
||
}
|
||
console.log("✅ Got token:", token.substring(0, 40) + "...\n");
|
||
|
||
// Step 2: Test DELETE directly on backend
|
||
await testDelete(token);
|
||
};
|
||
|
||
function login() {
|
||
return new Promise((resolve) => {
|
||
const postData = JSON.stringify({
|
||
username: "hop",
|
||
password: "hopWorship2024",
|
||
});
|
||
|
||
const options = {
|
||
hostname: "localhost",
|
||
port: 8080,
|
||
path: "/api/auth/login",
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
"Content-Length": postData.length,
|
||
},
|
||
};
|
||
|
||
const req = http.request(options, (res) => {
|
||
let data = "";
|
||
res.on("data", (chunk) => (data += chunk));
|
||
res.on("end", () => {
|
||
console.log("Login response status:", res.statusCode);
|
||
try {
|
||
const json = JSON.parse(data);
|
||
resolve(json.token || null);
|
||
} catch (e) {
|
||
console.log("Login response:", data);
|
||
resolve(null);
|
||
}
|
||
});
|
||
});
|
||
|
||
req.on("error", (e) => {
|
||
console.error("Login error:", e.message);
|
||
resolve(null);
|
||
});
|
||
|
||
req.write(postData);
|
||
req.end();
|
||
});
|
||
}
|
||
|
||
function testDelete(token) {
|
||
return new Promise((resolve) => {
|
||
const listId = "24474ea3-6f34-4704-ac48-a80e1225d79e";
|
||
const songId = "9831e027-aeb1-48a0-8763-fd3120f29692";
|
||
|
||
const options = {
|
||
hostname: "localhost",
|
||
port: 8080,
|
||
path: `/api/lists/${listId}/songs/${songId}`,
|
||
method: "DELETE",
|
||
headers: {
|
||
Authorization: `Bearer ${token}`,
|
||
"Content-Type": "application/json",
|
||
},
|
||
};
|
||
|
||
console.log("Testing DELETE:", options.path);
|
||
|
||
const req = http.request(options, (res) => {
|
||
let data = "";
|
||
res.on("data", (chunk) => (data += chunk));
|
||
res.on("end", () => {
|
||
console.log("\n=== RESULT ===");
|
||
console.log("Status:", res.statusCode);
|
||
console.log("Response:", data);
|
||
|
||
if (res.statusCode === 200) {
|
||
console.log("\n✅ SUCCESS! Backend DELETE works!");
|
||
console.log("If you still get 403 in browser, the issue is NGINX.");
|
||
} else if (res.statusCode === 403) {
|
||
console.log("\n❌ 403 from backend - check auth middleware");
|
||
} else if (res.statusCode === 401) {
|
||
console.log("\n⚠️ 401 - Token issue");
|
||
}
|
||
|
||
resolve();
|
||
});
|
||
});
|
||
|
||
req.on("error", (e) => {
|
||
console.error("Request error:", e.message);
|
||
console.log("\n❌ Backend might not be running!");
|
||
console.log("Run: sudo systemctl restart church-music-backend.service");
|
||
resolve();
|
||
});
|
||
|
||
req.end();
|
||
});
|
||
}
|
||
|
||
testDirectBackend();
|