FreeDatas2HTML/tests/remoteSourceSpec.ts

50 lines
2.2 KiB
TypeScript
Raw Normal View History

2021-10-18 11:35:30 +02:00
import { RemoteSource } from "../src/RemoteSource";
const errors=require("../src/errors.js");
describe("Tests des urls distantes", () =>
{
let source: RemoteSource;
beforeEach( () =>
{
source=new RemoteSource({ url:"http://localhost:8080/" });
});
it("Doit générer une erreur si l'url fournie est une chaîne vide.", () =>
{
expect(() => { return source.url=""; }).toThrowError(errors.remoteSourceNeedUrl);
expect(() => { return source.url=" "; }).toThrowError(errors.remoteSourceNeedUrl);
});
it("Doit générer une erreur si l'url fournie n'utilise pas un des protocoles autorisés.", () =>
{
expect(() => { return source.url="htp://localhost:8080/"; }).toThrowError(errors.remoteSourceUrlFail);
expect(() => { return source.url="ftp://localhost:8080/"; }).toThrowError(errors.remoteSourceUrlFail);
});
it("Doit accepter une url valide", () =>
{
expect(() => { return source.url="http://localhost:8080/"; }).not.toThrowError();
source.allowedUrlProtocol.push("ftp:");
expect(() => { return source.url="ftp://localhost:8080/"; }).not.toThrowError();
});
it("Seuls les headers conformes doivent être retenus", () =>
{
source.headers=[ { key:"token", value:"1234" }, { key:"vide", value:"" }, { key:"Sec-id", value:"666" }, { key:"Proxy-name", value:"myProxy" }, { key:"Content-Length", value:"255" }, { key:"userName", value:"Toto" }];
expect(source.headers).toEqual([ { key:"token", value:"1234" }, { key:"vide", value:"" }, { key:"userName", value:"Toto" }]);
});
it("Doit retourner la configuration correcte pour fetch.", () =>
{
let headers=new Headers();
expect(source.getFetchSettings()).toEqual({ method: "GET", headers: headers, credentials: "omit" });
source.headers=[ { key:"token", value:"1234" }, { key:"userName", value:"Toto" }];
source.withCredentials=true;
headers=new Headers();
headers.append("token", "1234");
headers.append("userName", "Toto");
expect(source.getFetchSettings()).toEqual({ method: "GET", headers: headers, credentials: "include" });
});
});