blob: 0d7bd6a1ffb8da4d27402170e0c5e6ad6c883b1f [file] [log] [blame]
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +04001package installer
2
3import (
gio3cdee592024-04-17 10:15:56 +04004 "net"
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +04005 "testing"
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +04006)
7
Giorgi Lekveishvili67383962024-03-22 19:27:34 +04008func TestAuthProxyEnabled(t *testing.T) {
Giorgi Lekveishvili186eae52024-02-15 14:21:41 +04009 r := NewInMemoryAppRepository(CreateAllApps())
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040010 for _, app := range []string{"rpuppy", "Pi-hole", "url-shortener"} {
gio3cdee592024-04-17 10:15:56 +040011 a, err := FindEnvApp(r, app)
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040012 if err != nil {
13 t.Fatal(err)
14 }
15 if a == nil {
16 t.Fatal("returned app is nil")
17 }
gio3cdee592024-04-17 10:15:56 +040018 release := Release{
19 Namespace: "foo",
20 }
21 env := AppEnvConfig{
22 InfraName: "dodo",
23 Id: "id",
24 ContactEmail: "foo@bar.ge",
25 Domain: "bar.ge",
26 PrivateDomain: "p.bar.ge",
27 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
28 NamespacePrefix: "id-",
29 }
30 values := map[string]any{
31 "network": "Public",
32 "subdomain": "woof",
33 "auth": map[string]any{
34 "enabled": true,
35 "groups": "a,b",
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040036 },
37 }
gio3cdee592024-04-17 10:15:56 +040038 rendered, err := a.Render(release, env, values)
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040039 if err != nil {
40 t.Fatal(err)
41 }
42 for _, r := range rendered.Resources {
43 t.Log(string(r))
44 }
45 }
46}
47
48func TestAuthProxyDisabled(t *testing.T) {
49 r := NewInMemoryAppRepository(CreateAllApps())
50 for _, app := range []string{"rpuppy", "Pi-hole", "url-shortener"} {
gio3cdee592024-04-17 10:15:56 +040051 a, err := FindEnvApp(r, app)
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040052 if err != nil {
53 t.Fatal(err)
54 }
55 if a == nil {
56 t.Fatal("returned app is nil")
57 }
gio3cdee592024-04-17 10:15:56 +040058 release := Release{
59 Namespace: "foo",
60 }
61 env := AppEnvConfig{
62 InfraName: "dodo",
63 Id: "id",
64 ContactEmail: "foo@bar.ge",
65 Domain: "bar.ge",
66 PrivateDomain: "p.bar.ge",
67 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
68 NamespacePrefix: "id-",
69 }
70 values := map[string]any{
71 "network": "Public",
72 "subdomain": "woof",
73 "auth": map[string]any{
74 "enabled": false,
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040075 },
76 }
gio3cdee592024-04-17 10:15:56 +040077 rendered, err := a.Render(release, env, values)
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040078 if err != nil {
79 t.Fatal(err)
80 }
81 for _, r := range rendered.Resources {
82 t.Log(string(r))
83 }
84 }
85}
86
87func TestGroupMemberships(t *testing.T) {
88 r := NewInMemoryAppRepository(CreateAllApps())
gio3cdee592024-04-17 10:15:56 +040089 a, err := FindEnvApp(r, "memberships")
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +040090 if err != nil {
Giorgi Lekveishvili186eae52024-02-15 14:21:41 +040091 t.Fatal(err)
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +040092 }
Giorgi Lekveishvili186eae52024-02-15 14:21:41 +040093 if a == nil {
94 t.Fatal("returned app is nil")
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +040095 }
gio3cdee592024-04-17 10:15:56 +040096 release := Release{
97 Namespace: "foo",
Giorgi Lekveishvili67383962024-03-22 19:27:34 +040098 }
gio3cdee592024-04-17 10:15:56 +040099 env := AppEnvConfig{
100 InfraName: "dodo",
101 Id: "id",
102 ContactEmail: "foo@bar.ge",
103 Domain: "bar.ge",
104 PrivateDomain: "p.bar.ge",
105 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
106 NamespacePrefix: "id-",
107 }
108 values := map[string]any{}
109 rendered, err := a.Render(release, env, values)
Giorgi Lekveishvili67383962024-03-22 19:27:34 +0400110 if err != nil {
111 t.Fatal(err)
112 }
113 for _, r := range rendered.Resources {
114 t.Log(string(r))
115 }
Giorgi Lekveishvili7c427602024-01-04 00:13:55 +0400116}
Giorgi Lekveishviliee15ee22024-03-28 12:35:10 +0400117
118func TestGerrit(t *testing.T) {
119 r := NewInMemoryAppRepository(CreateAllApps())
gio3cdee592024-04-17 10:15:56 +0400120 a, err := FindEnvApp(r, "gerrit")
Giorgi Lekveishviliee15ee22024-03-28 12:35:10 +0400121 if err != nil {
122 t.Fatal(err)
123 }
124 if a == nil {
125 t.Fatal("returned app is nil")
126 }
gio3cdee592024-04-17 10:15:56 +0400127 release := Release{
128 Namespace: "foo",
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400129 }
gio3cdee592024-04-17 10:15:56 +0400130 env := AppEnvConfig{
131 InfraName: "dodo",
132 Id: "id",
133 ContactEmail: "foo@bar.ge",
134 Domain: "bar.ge",
135 PrivateDomain: "p.bar.ge",
136 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
137 NamespacePrefix: "id-",
138 }
139 values := map[string]any{
140 "subdomain": "gerrit",
141 "network": "Private",
142 "key": map[string]any{
143 "public": "foo",
144 "private": "bar",
145 },
146 "sshPort": 22,
147 }
148 rendered, err := a.Render(release, env, values)
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400149 if err != nil {
150 t.Fatal(err)
151 }
152 for _, r := range rendered.Resources {
153 t.Log(string(r))
154 }
155}
156
157func TestJenkins(t *testing.T) {
158 r := NewInMemoryAppRepository(CreateAllApps())
gio3cdee592024-04-17 10:15:56 +0400159 a, err := FindEnvApp(r, "jenkins")
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400160 if err != nil {
161 t.Fatal(err)
162 }
163 if a == nil {
164 t.Fatal("returned app is nil")
165 }
gio3cdee592024-04-17 10:15:56 +0400166 release := Release{
167 Namespace: "foo",
Giorgi Lekveishviliee15ee22024-03-28 12:35:10 +0400168 }
gio3cdee592024-04-17 10:15:56 +0400169 env := AppEnvConfig{
170 InfraName: "dodo",
171 Id: "id",
172 ContactEmail: "foo@bar.ge",
173 Domain: "bar.ge",
174 PrivateDomain: "p.bar.ge",
175 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
176 NamespacePrefix: "id-",
177 }
178 values := map[string]any{
179 "subdomain": "jenkins",
180 "network": "Private",
181 }
182 rendered, err := a.Render(release, env, values)
Giorgi Lekveishviliee15ee22024-03-28 12:35:10 +0400183 if err != nil {
184 t.Fatal(err)
185 }
186 for _, r := range rendered.Resources {
187 t.Log(string(r))
188 }
189}
giodb274d12024-04-19 11:53:18 +0400190
191func TestIngressPublic(t *testing.T) {
192 r := NewInMemoryAppRepository(CreateAllApps())
193 a, err := FindInfraApp(r, "ingress-public")
194 if err != nil {
195 t.Fatal(err)
196 }
197 if a == nil {
198 t.Fatal("returned app is nil")
199 }
200 release := Release{
201 Namespace: "foo",
202 }
203 env := InfraConfig{
204 Name: "dodo",
205 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
206 InfraNamespacePrefix: "id-",
207 InfraAdminPublicKey: []byte("foo"),
208 }
209 values := map[string]any{
210 "sshPrivateKey": "private",
211 }
212 rendered, err := a.Render(release, env, values)
213 if err != nil {
214 t.Fatal(err)
215 }
216 for _, r := range rendered.Resources {
217 t.Log(string(r))
218 }
219}
220
221func TestPrivateNetwork(t *testing.T) {
222 r := NewInMemoryAppRepository(CreateAllApps())
223 a, err := FindEnvApp(r, "private-network")
224 if err != nil {
225 t.Fatal(err)
226 }
227 if a == nil {
228 t.Fatal("returned app is nil")
229 }
230 release := Release{
231 Namespace: "foo",
232 }
233 env := AppEnvConfig{
234 InfraName: "dodo",
235 Id: "id",
236 ContactEmail: "foo@bar.ge",
237 Domain: "bar.ge",
238 PrivateDomain: "p.bar.ge",
239 PublicIP: []net.IP{net.ParseIP("1.2.3.4")},
240 NamespacePrefix: "id-",
241 }
242 values := map[string]any{
243 "privateNetwork": map[string]any{
244 "hostname": "foo",
245 "username": "bar",
246 "ipSubnet": "123123",
247 },
248 "sshPrivateKey": "private",
249 }
250 rendered, err := a.Render(release, env, values)
251 if err != nil {
252 t.Fatal(err)
253 }
254 for _, r := range rendered.Resources {
255 t.Log(string(r))
256 }
257}