1
0
mirror of https://github.com/bitwarden/browser.git synced 2025-01-29 22:31:29 +01:00

Test existing Login URI icon retrieval behavior (#12845)

This commit is contained in:
Matt Gibson 2025-01-27 07:12:58 -08:00 committed by GitHub
parent 682e62cb6b
commit 8577aae879
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,141 @@
import { CipherType } from "../enums";
import { CipherView } from "../models/view/cipher.view";
import { buildCipherIcon } from "./build-cipher-icon";
describe("buildCipherIcon", () => {
const iconServerUrl = "https://icons.example";
describe("Login cipher", () => {
const cipher = {
type: CipherType.Login,
login: {
uri: "https://test.example",
},
} as any as CipherView;
it.each([true, false])("handles android app URIs for showFavicon setting %s", (showFavicon) => {
setUri("androidapp://test.example");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, showFavicon);
expect(iconDetails).toEqual({
icon: "bwi-android",
image: null,
fallbackImage: "",
imageEnabled: showFavicon,
});
});
it("does not mark as an android app if the protocol is not androidapp", () => {
// This weird URI points to test.androidapp with a default port and path of /.example
setUri("https://test.androidapp://.example");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: "https://icons.example/test.androidapp/icon.png",
fallbackImage: "images/bwi-globe.png",
imageEnabled: true,
});
});
it.each([true, false])("handles ios app URIs for showFavicon setting %s", (showFavicon) => {
setUri("iosapp://test.example");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, showFavicon);
expect(iconDetails).toEqual({
icon: "bwi-apple",
image: null,
fallbackImage: "",
imageEnabled: showFavicon,
});
});
it("does not mark as an ios app if the protocol is not iosapp", () => {
// This weird URI points to test.iosapp with a default port and path of /.example
setUri("https://test.iosapp://.example");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: "https://icons.example/test.iosapp/icon.png",
fallbackImage: "images/bwi-globe.png",
imageEnabled: true,
});
});
const testUris = ["test.example", "https://test.example"];
it.each(testUris)("resolves favicon for %s", (uri) => {
setUri(uri);
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: "https://icons.example/test.example/icon.png",
fallbackImage: "images/bwi-globe.png",
imageEnabled: true,
});
});
it.each(testUris)("does not resolve favicon for %s if showFavicon is false", () => {
setUri("https://test.example");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, false);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: undefined,
fallbackImage: "",
imageEnabled: false,
});
});
it("does not resolve a favicon if the URI is missing a `.`", () => {
setUri("test");
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: undefined,
fallbackImage: "",
imageEnabled: true,
});
});
it.each(["test.onion", "test.i2p"])("does not resolve a favicon for %s", (uri) => {
setUri(`https://${uri}`);
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: null,
fallbackImage: "images/bwi-globe.png",
imageEnabled: true,
});
});
it.each([null, undefined])("does not resolve a favicon if there is no uri", (nullish) => {
setUri(nullish as any as string);
const iconDetails = buildCipherIcon(iconServerUrl, cipher, true);
expect(iconDetails).toEqual({
icon: "bwi-globe",
image: null,
fallbackImage: "",
imageEnabled: true,
});
});
function setUri(uri: string) {
(cipher.login as { uri: string }).uri = uri;
}
});
});