Files
Church-Music/new-site/backend/test-direct.js

113 lines
2.9 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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();