-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgrafana-dashboard.test.ts
More file actions
87 lines (74 loc) · 3.1 KB
/
grafana-dashboard.test.ts
File metadata and controls
87 lines (74 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { beforeEach, describe, expect, it, vi } from "vitest";
import {
buildGrafanaPanelUrl,
getGrafanaHomeUrl,
getGrafanaSessionBootstrapUrl,
getGrafanaSessionProbeUrl,
getK6GrafanaDashboardUrl,
getMonitoringProxyBaseUrl,
getPrometheusHomeUrl,
} from "./grafana-dashboard";
describe("grafana-dashboard", () => {
beforeEach(() => {
vi.resetModules();
vi.unstubAllEnvs();
});
it("모니터링 프록시 기본 URL은 same-origin 경로를 사용한다", () => {
expect(getMonitoringProxyBaseUrl()).toBe("");
});
it("Grafana 홈 URL은 grafana 서브패스를 사용한다", () => {
expect(getGrafanaHomeUrl()).toBe("/grafana/");
expect(getGrafanaSessionBootstrapUrl()).toBeNull();
});
it("Prometheus 홈 URL은 prometheus 서브패스를 사용한다", () => {
expect(getPrometheusHomeUrl()).toBe("/prometheus/");
expect(getGrafanaSessionProbeUrl()).toBe("/grafana/api/user");
});
it("k6 대시보드 URL은 Grafana 대시보드 경로를 사용한다", () => {
expect(getK6GrafanaDashboardUrl()).toBe(
"/grafana/d/maum-on-k6-load-test/maum-on-k6-load-test",
);
});
it("패널 iframe URL은 d-solo 경로와 panelId를 포함한다", () => {
const url = buildGrafanaPanelUrl(3);
expect(url).toContain("/grafana/d-solo/maum-on-local-observability/maum-on-local-observability");
expect(url).toContain("panelId=3");
expect(url).toContain("theme=light");
expect(url).toContain("refresh=60s");
});
it("운영에서 명시 설정이 없어도 Grafana 링크는 monitor 도메인을 추론해 사용한다", async () => {
vi.stubEnv("NODE_ENV", "production");
vi.stubEnv("NEXT_PUBLIC_API_BASE_URL", "https://api.maum-on.parksuyeon.site");
const {
getGrafanaHomeUrl: getHomeUrl,
getGrafanaSessionProbeUrl: getProbeUrl,
getMonitoringProxyBaseUrl: getBaseUrl,
usesCrossOriginMonitoringEmbed: usesCrossOriginEmbed,
} = await import("./grafana-dashboard");
expect(getBaseUrl()).toBe("https://monitor.maum-on.parksuyeon.site");
expect(getHomeUrl()).toBe("https://monitor.maum-on.parksuyeon.site/grafana/");
expect(getProbeUrl()).toBe("/grafana/api/user");
expect(getGrafanaSessionBootstrapUrl()).toBe(
"https://monitor.maum-on.parksuyeon.site/grafana/login",
);
expect(usesCrossOriginEmbed()).toBe(true);
});
it("명시적인 외부 monitoring URL이 있으면 cross-origin 링크를 사용한다", async () => {
vi.stubEnv("NODE_ENV", "production");
vi.stubEnv(
"NEXT_PUBLIC_MONITORING_PROXY_URL",
"https://monitor.maum-on.parksuyeon.site/",
);
const {
getGrafanaHomeUrl: getHomeUrl,
getMonitoringProxyBaseUrl: getBaseUrl,
usesCrossOriginMonitoringEmbed: usesCrossOriginEmbed,
} = await import("./grafana-dashboard");
expect(getBaseUrl()).toBe("https://monitor.maum-on.parksuyeon.site");
expect(getHomeUrl()).toBe("https://monitor.maum-on.parksuyeon.site/grafana/");
expect(getGrafanaSessionBootstrapUrl()).toBe(
"https://monitor.maum-on.parksuyeon.site/grafana/login",
);
expect(usesCrossOriginEmbed()).toBe(true);
});
});