blob: b2ecd990e7326e279d56f735ce22aee3863b7edf [file] [log] [blame]
giof6ad2982024-08-23 17:42:49 +04001package installer
2
3import (
4 "net"
5 "strings"
6 "testing"
7)
8
9func TestParseNginxProxyConfig(t *testing.T) {
gio721c0042025-04-03 11:56:36 +040010 cfg, err := ParseNginxProxyConfig(strings.NewReader(`
11apiVersion: v1
12kind: ConfigMap
13metadata:
14 name: proxy-backend-config
15 namespace: foo
16data:
17nginx.conf: |
giof6ad2982024-08-23 17:42:49 +040018# user www www;
19worker_processes 1;
20error_log /dev/null crit;
21# pid logs/nginx.pid;
22worker_rlimit_nofile 8192;
23events {
24 worker_connections 1024;
25}
26http {
27 error_log /var/log/nginx/error.log debug;
28 log_format dodo '$http_host $proxy_host $status';
29 access_log /var/log/nginx/access.log dodo;
30 map $http_host $backend {
31 a A;
32 b B;
33 }
34 server {
35 listen 9090;
36 location / {
37 resolver 1.1.1.1;
38 resolver 2.2.2.2;
39 proxy_pass http://$backend;
40 }
41 }
42}
gio721c0042025-04-03 11:56:36 +040043stream {
44 server {
45 listen 9091;
46 proxy_pass foo:1;
47 }
48 server {
49 listen 9092 udp;
50 proxy_pass bar:2;
51 }
52 server {
53 listen 9093;
54 proxy_pass dev:3;
55 }
56}
giof6ad2982024-08-23 17:42:49 +040057`))
58 if err != nil {
59 t.Fatal(err)
60 }
gio721c0042025-04-03 11:56:36 +040061 if cfg.Namespace != "foo" {
62 t.Errorf("invalid namespace: expeced foo, got %s", cfg.Namespace)
63 }
64 if cfg.IngressPort != 9090 {
65 t.Errorf("invalid port: expected 9090, got %d", cfg.IngressPort)
giof6ad2982024-08-23 17:42:49 +040066 }
67 if len(cfg.Resolvers) != 2 ||
68 !cfg.Resolvers[0].Equal(net.ParseIP("1.1.1.1")) ||
69 !cfg.Resolvers[1].Equal(net.ParseIP("2.2.2.2")) {
70 t.Errorf("invalid resolvers: expected [1.1.1.1 2.2.2.2], got %s", cfg.Resolvers)
71 }
gio721c0042025-04-03 11:56:36 +040072 if len(cfg.Ingress) != 2 ||
73 cfg.Ingress["a"] != "A" ||
74 cfg.Ingress["b"] != "B" {
75 t.Errorf("invalid ingress proxies: expected map[a:A, b:B], got %s", cfg.Ingress)
76 }
77 if len(cfg.TCP) != 2 ||
78 cfg.TCP[9091] != "foo:1" ||
79 cfg.TCP[9093] != "dev:3" {
80 t.Errorf("invalid TCP proxies: expected map[9091:foo:1, 9093:dev:3], got %v", cfg.TCP)
81 }
82 if len(cfg.UDP) != 1 ||
83 cfg.UDP[9092] != "bar:2" {
84 t.Errorf("invalid UDP proxies: expected map[9092:bar:2], got %v", cfg.UDP)
giof6ad2982024-08-23 17:42:49 +040085 }
86}
87
88func TestRenderNginxProxyConfig(t *testing.T) {
89 cfg := NginxProxyConfig{
gio721c0042025-04-03 11:56:36 +040090 IngressPort: 8080,
91 Resolvers: []net.IP{net.ParseIP("1.1.1.1"), net.ParseIP("2.2.2.2")},
92 Ingress: map[string]string{
giof6ad2982024-08-23 17:42:49 +040093 "a": "A",
94 "b": "B",
95 },
gio721c0042025-04-03 11:56:36 +040096 TCP: map[int]string{
97 1: "foo:1",
98 3: "dev:3",
99 },
100 UDP: map[int]string{
101 2: "bar:2",
102 },
giof6ad2982024-08-23 17:42:49 +0400103 PreConf: []string{"line1", "line2"},
104 }
105 var buf strings.Builder
106 if err := cfg.Render(&buf); err != nil {
107 t.Fatal(err)
108 }
109 t.Log(buf.String())
110}