Files
nodeMap/pages/api/gisSystemStatic.test.js
2025-01-04 12:36:52 +01:00

82 lines
2.7 KiB
JavaScript

import axios from "axios";
import os from "os";
// Dynamische IP-Adresse ermitteln
function getLocalIPAddress() {
const interfaces = os.networkInterfaces();
for (const name of Object.keys(interfaces)) {
for (const iface of interfaces[name]) {
if (iface.family === "IPv4" && !iface.internal) {
return iface.address; // IPv4-Adresse zurückgeben
}
}
}
return "localhost"; // Fallback zu localhost
}
// Dynamische Basis-URL
const BASE_URL = `http://${getLocalIPAddress()}:3000/api/gisSystemStatic`;
//http://localhost:3000/api/gisSystemStatic
describe("Echte API-Integrationstests für gisSystemStatic", () => {
// Test 1: Erfolgreiche Anfrage mit gültigen Parametern
it("gibt JSON-Daten zurück, wenn gültige Parameter übergeben werden", async () => {
const params = {
m: "12", // Beispiel für idMap
u: "484", // Beispiel für idUser
};
// Echte Anfrage an den Server senden
const response = await axios.get(BASE_URL, { params });
// Header sicher loggen
console.log("Content-Type:", response.headers["content-type"]);
// Statuscode prüfen
expect(response.status).toBe(200);
// Überprüfen, ob die Antwort die erwarteten JSON-Daten enthält
expect(response.data).toHaveProperty("Name");
expect(response.data).toHaveProperty("Zeitstempel");
expect(response.data).toHaveProperty("IdMap");
expect(response.data).toHaveProperty("Systems");
expect(response.data.Systems).toBeInstanceOf(Array);
// Erster Eintrag prüfen
const item = response.data.Systems[0];
expect(item).toHaveProperty("IdSystem");
expect(item).toHaveProperty("Name");
expect(item).toHaveProperty("Longname");
expect(item).toHaveProperty("Allow");
expect(item).toHaveProperty("Icon");
});
// Test 2: Fehler bei fehlenden Parametern
it("gibt einen Fehler zurück, wenn Parameter fehlen", async () => {
try {
// Anfrage ohne Parameter
await axios.get(BASE_URL);
} catch (error) {
expect(error.response.status).toBe(400);
expect(error.response.data).toHaveProperty("error");
// Flexibler auf Fehlernachricht prüfen
expect(error.response.data.message).toMatch(/Fehlende Parameter|erforderlich/);
}
});
// Test 3: Fehler bei ungültigen Parametern
it("gibt einen Serverfehler zurück, wenn ungültige Parameter verwendet werden", async () => {
try {
const params = {
m: "invalid", // Ungültige idMap
u: "invalid", // Ungültige idUser
};
await axios.get(BASE_URL, { params });
} catch (error) {
expect(error.response.status).toBe(500);
expect(error.response.data).toHaveProperty("error");
}
});
});