import axios from "axios"; import os from "os"; // Modul zum Ermitteln der IP-Adresse // Dynamische Ermittlung der IP-Adresse des Rechners 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; // Rückgabe der IPv4-Adresse } } } return "localhost"; // Fallback zu localhost } // Basis-URL dynamisch erstellen const BASE_URL = `http://${getLocalIPAddress()}:3000/api/gisStationsMeasurements`; describe("Echte API-Integrationstests für gisStationsMeasurements", () => { // 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 }; // Echte Anfrage an den Server senden const response = await axios.get(BASE_URL, { params }); // Debugging der Header console.log(response.headers); // 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("Statis"); expect(response.data.Statis).toBeInstanceOf(Array); const item = response.data.Statis[0]; expect(item).toHaveProperty("IdLD"); expect(item).toHaveProperty("IdL"); expect(item).toHaveProperty("IdDP"); expect(item).toHaveProperty("Na"); expect(item).toHaveProperty("Val"); expect(item).toHaveProperty("Unit"); expect(item).toHaveProperty("Gr"); expect(item).toHaveProperty("Area_Name"); }); // 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(/Fehlender 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 }; await axios.get(BASE_URL, { params }); } catch (error) { expect(error.response.status).toBe(500); expect(error.response.data).toHaveProperty("error"); } }); });