import { getAbsoluteUri } from "../../Source/Cesium.js";
import { isCrossOriginUrl } from "../../Source/Cesium.js";
import { Uri } from "../../Source/Cesium.js";

describe("Core/isCrossOriginUrl", function () {
  it("returns false for relative urls", function () {
    expect(isCrossOriginUrl("/some/url.jpg")).toEqual(false);
    expect(isCrossOriginUrl("some/url.jpg")).toEqual(false);
  });

  it("returns false for absolute urls that are not cross-origin", function () {
    var absoluteUrl = getAbsoluteUri("/some/url.jpg");
    expect(isCrossOriginUrl(absoluteUrl)).toEqual(false);

    absoluteUrl = getAbsoluteUri("some/url.jpg");
    expect(isCrossOriginUrl(absoluteUrl)).toEqual(false);
  });

  it("returns true for absolute urls that are cross-origin", function () {
    expect(isCrossOriginUrl("http://example.invalid/some/url.jpg")).toEqual(
      true
    );

    // a different scheme counts as cross-origin
    var pageUri = new Uri(location.href);
    pageUri.scheme(location.protocol === "https:" ? "http" : "https");

    var absoluteUrl = pageUri.toString();
    expect(isCrossOriginUrl(absoluteUrl)).toEqual(true);

    // so does a different port
    pageUri = new Uri(location.href);
    pageUri.authority(location.hostname + ":" + (+location.port + 1));

    absoluteUrl = pageUri.toString();
    expect(isCrossOriginUrl(absoluteUrl)).toEqual(true);
  });
});
