blob: 5b0f3b13f5cf014f55441af380c248aaed7a2a05 [file] [log] [blame]
gio561724f2024-11-04 08:37:34 +04001package installer
2
3import (
4 "testing"
5
6 "cuelang.org/go/cue/errors"
7)
8
giofc441e32024-11-11 16:26:14 +04009var exposed = `
10service: [{
11 name: "app"
gio561724f2024-11-04 08:37:34 +040012 type: "golang:1.20.0"
13 run: "main.go"
14 ingress: {
15 network: "private"
16 subdomain: "testapp"
17 auth: enabled: false
18 }
giofc441e32024-11-11 16:26:14 +040019 source: repository: "ssh://foo.bar"
20 ports: [{
21 name: "a"
22 value: 100
23 }, {
24 name: "web"
25 value: 8080
26 }, {
27 name: "b"
28 value: 101
29 }]
30 expose: [{
31 network: "private"
32 subdomain: "1"
33 port: value: 100
34 }, {
35 network: "public"
36 subdomain:"2"
37 port: name: "web"
38 }, {
39 network: "private"
40 subdomain: "3"
41 port: value: 101
42 }]
43}]
gio561724f2024-11-04 08:37:34 +040044
45postgresql: [{
46 name: "db_1"
giofc441e32024-11-11 16:26:14 +040047 expose: [{
48 network: "private"
49 subdomain: "1"
50 }, {
51 network: "public"
52 subdomain:"2"
53 }, {
54 network: "private"
55 subdomain: "3"
56 }]
gio561724f2024-11-04 08:37:34 +040057}, {
58 name: "db_2"
giofc441e32024-11-11 16:26:14 +040059 expose: [{
60 network: "public"
61 subdomain: "1"
62 }, {
63 network: "private"
64 subdomain:"2"
65 }, {
66 network: "public"
67 subdomain: "3"
68 }]
69}]
gio561724f2024-11-04 08:37:34 +040070
giofc441e32024-11-11 16:26:14 +040071mongodb: [{
72 name: "mdb_1"
73 expose: [{
74 network: "public"
75 subdomain: "1"
76 }, {
77 network: "private"
78 subdomain:"2"
79 }, {
80 network: "public"
81 subdomain: "3"
82 }]
83}, {
84 name: "mdb_2"
85 expose: [{
86 network: "private"
87 subdomain: "1"
88 }, {
89 network: "public"
90 subdomain:"2"
91 }, {
92 network: "private"
93 subdomain: "3"
94 }]
95}]
96`
97
98func TestExposedPorts(t *testing.T) {
99 app, err := NewDodoApp([]byte(exposed))
gio561724f2024-11-04 08:37:34 +0400100 if err != nil {
101 for _, e := range errors.Errors(err) {
102 t.Log(e)
103 }
104 t.Fatal(err)
105 }
gio561724f2024-11-04 08:37:34 +0400106 release := Release{
107 Namespace: "foo",
108 AppInstanceId: "foo-bar",
109 RepoAddr: "ssh://192.168.100.210:22/config",
110 AppDir: "/foo/bar",
111 }
112 keyGen := testKeyGen{}
113 r, err := app.Render(release, env, networks, nil, map[string]any{
giofc441e32024-11-11 16:26:14 +0400114 "managerAddr": "",
115 "appId": "",
116 "sshPrivateKey": "",
117 "port_postgresql_db_1_0": 1,
118 "port_postgresql_db_1_1": 2,
119 "port_postgresql_db_1_2": 3,
120 "port_postgresql_db_2_0": 4,
121 "port_postgresql_db_2_1": 5,
122 "port_postgresql_db_2_2": 6,
123 "port_mongodb_mdb_1_0": 1,
124 "port_mongodb_mdb_1_1": 2,
125 "port_mongodb_mdb_1_2": 3,
126 "port_mongodb_mdb_2_0": 4,
127 "port_mongodb_mdb_2_1": 5,
128 "port_mongodb_mdb_2_2": 6,
129 "port_service_app_0": 7,
130 "port_service_app_1": 8,
131 "port_service_app_2": 9,
gio561724f2024-11-04 08:37:34 +0400132 }, nil, keyGen)
133 if err != nil {
giofc441e32024-11-11 16:26:14 +0400134 t.Fatal(err)
135 }
136 t.Log(string(r.Raw))
137}
138
139const canvas = `
140{
141 "service": [
142 {
143 "type": "nextjs:deno-2.0.0",
144 "name": "app",
145 "source": {
146 "repository": "ssh://d.p.v1.dodo.cloud:62533/myblog",
147 "branch": "master",
148 "rootDir": "/"
149 },
150 "ports": [
151 {
152 "name": "web",
153 "value": 3000,
154 "protocol": "TCP"
155 }
156 ],
157 "env": [
158 {
159 "name": "DODO_POSTGRESQL_DB_CONNECTION_URL"
160 }
161 ],
162 "ingress": {
163 "network": "Private",
164 "subdomain": "foo",
165 "port": {
166 "name": "web"
167 },
168 "auth": {
169 "enabled": false
170 }
171 },
172 "expose": [],
173 "dev": { "enabled": true, "username": "gio" }
174 }
175 ],
176 "volume": [],
177 "postgresql": [
178 {
179 "name": "db",
180 "size": "1Gi",
181 "expose": []
182 }
183 ],
184 "mongodb": []
185}
186`
187
188func TestCanvas(t *testing.T) {
189 app, err := NewDodoApp([]byte(canvas))
190 if err != nil {
gio561724f2024-11-04 08:37:34 +0400191 for _, e := range errors.Errors(err) {
giofc441e32024-11-11 16:26:14 +0400192 t.Log(e)
gio561724f2024-11-04 08:37:34 +0400193 }
194 t.Fatal(err)
195 }
giofc441e32024-11-11 16:26:14 +0400196 release := Release{
197 Namespace: "foo",
198 AppInstanceId: "foo-bar",
199 RepoAddr: "ssh://192.168.100.210:22/config",
200 AppDir: "/foo/bar",
201 }
202 keyGen := testKeyGen{}
203 r, err := app.Render(release, env, networks, nil, map[string]any{
204 "managerAddr": "",
205 "appId": "",
206 "sshPrivateKey": "",
207 }, nil, keyGen)
208 if err != nil {
209 t.Fatal(err)
210 }
gio561724f2024-11-04 08:37:34 +0400211 t.Log(string(r.Raw))
212}