@@ -3,7 +3,9 @@ package cmd
33import (
44 "bytes"
55 "fmt"
6+ "io/ioutil"
67 "net/http"
8+ "os"
79 "testing"
810
911 "github.com/drycc/controller-sdk-go/api"
@@ -58,12 +60,13 @@ func TestRoutesList(t *testing.T) {
5860 "owner": "test",
5961 "updated": "2023-04-19T00:00:00UTC",
6062 "name": "example-go",
61- "procfile_type": "web",
62- "kind": "HTTPRoute",
63- "parent_refs": [
63+ "procfile_type": "web",
64+ "kind": "HTTPRoute",
65+ "port": 80,
66+ "parent_refs": [
6467 {
6568 "name": "example-go",
66- "sectionName ": "example-go-80-http"
69+ "port ": 80
6770 }
6871 ]
6972 }
@@ -75,78 +78,14 @@ func TestRoutesList(t *testing.T) {
7578 assert .NoError (t , err )
7679
7780 assert .Equal (t , b .String (), `=== foo Routes
78- +------------+------+-----------+------------+
79- | NAME | TYPE | KIND | GATEWAY |
80- +------------+------+-----------+------------+
81- | example-go | web | HTTPRoute | example-go |
82- +------------+------+-----------+------------+
81+ +------------+------+-----------+--------------+------------+--------------- +
82+ | NAME | TYPE | KIND | SERVICE PORT | GATEWAY | LISTENER PORT |
83+ +------------+------+-----------+--------------+------------+--------------- +
84+ | example-go | web | HTTPRoute | 80 | example-go | 80 |
85+ +------------+------+-----------+--------------+------------+--------------- +
8386` , "output" )
8487}
8588
86- func TestRouteGet (t * testing.T ) {
87- t .Parallel ()
88- cf , server , err := testutil .NewTestServerAndClient ()
89- if err != nil {
90- t .Fatal (err )
91- }
92- defer server .Close ()
93- var b bytes.Buffer
94- cmdr := DryccCmd {WOut : & b , ConfigFile : cf }
95-
96- server .Mux .HandleFunc ("/v2/apps/foo/routes/example-go/" , func (w http.ResponseWriter , r * http.Request ) {
97- testutil .SetHeaders (w )
98- fmt .Fprintf (w , `[
99- {
100- "backendRefs": [
101- {
102- "kind": "Service",
103- "name": "py3django3",
104- "port": 80
105- }
106- ]
107- }
108- ]` )
109- })
110-
111- err = cmdr .RoutesGet ("foo" , "example-go" )
112- assert .NoError (t , err )
113-
114- assert .Equal (t , b .String (), `[
115- {
116- "backendRefs": [
117- {
118- "kind": "Service",
119- "name": "py3django3",
120- "port": 80
121- }
122- ]
123- }
124- ]
125- ` , "output" )
126- }
127-
128- func TestRouteSet (t * testing.T ) {
129- t .Parallel ()
130- cf , server , err := testutil .NewTestServerAndClient ()
131- if err != nil {
132- t .Fatal (err )
133- }
134- defer server .Close ()
135- var b bytes.Buffer
136- cmdr := DryccCmd {WOut : & b , ConfigFile : cf }
137-
138- server .Mux .HandleFunc ("/v2/apps/foo/routes/example-go/" , func (w http.ResponseWriter , r * http.Request ) {
139- testutil .SetHeaders (w )
140- w .WriteHeader (http .StatusNoContent )
141- })
142- rules := `"[{\"backendRefs\": [{\"kind\": \"Service\",\"name\": \"py3django3\",\"port\": 80}]}]"`
143-
144- err = cmdr .RoutesSet ("foo" , "example-go" , rules )
145- assert .NoError (t , err )
146-
147- assert .Equal (t , testutil .StripProgress (b .String ()), "Applying rules... done\n " , "output" )
148- }
149-
15089func TestRoutesAttach (t * testing.T ) {
15190 t .Parallel ()
15291 cf , server , err := testutil .NewTestServerAndClient ()
@@ -194,7 +133,7 @@ func TestRoutesDetach(t *testing.T) {
194133 assert .Equal (t , testutil .StripProgress (b .String ()), "Detaching route example-go to gateway example-go... done\n " , "output" )
195134}
196135
197- func TestRoutesGet (t * testing.T ) {
136+ func TestRouteGet (t * testing.T ) {
198137 t .Parallel ()
199138 cf , server , err := testutil .NewTestServerAndClient ()
200139 if err != nil {
@@ -206,15 +145,34 @@ func TestRoutesGet(t *testing.T) {
206145
207146 server .Mux .HandleFunc ("/v2/apps/foo/routes/example-go/rules/" , func (w http.ResponseWriter , r * http.Request ) {
208147 testutil .SetHeaders (w )
209- w .WriteHeader (http .StatusOK )
210- // TODO real rule
211- w .Write ([]byte ("" ))
148+ fmt .Fprintf (w , `[
149+ {
150+ "backendRefs": [
151+ {
152+ "kind": "Service",
153+ "name": "py3django3",
154+ "port": 80
155+ }
156+ ]
157+ }
158+ ]` )
212159 })
213160
214161 err = cmdr .RoutesGet ("foo" , "example-go" )
215162 assert .NoError (t , err )
216163
217- assert .Equal (t , testutil .StripProgress (b .String ()), "\n " , "output" )
164+ assert .Equal (t , b .String (), `[
165+ {
166+ "backendRefs": [
167+ {
168+ "kind": "Service",
169+ "name": "py3django3",
170+ "port": 80
171+ }
172+ ]
173+ }
174+ ]
175+ ` , "output" )
218176}
219177
220178func TestRoutesSet (t * testing.T ) {
@@ -232,8 +190,33 @@ func TestRoutesSet(t *testing.T) {
232190 w .WriteHeader (http .StatusNoContent )
233191 w .Write ([]byte ("" ))
234192 })
235-
236- err = cmdr .RoutesSet ("foo" , "example-go" , "" )
193+ ruleFile , err := ioutil .TempFile ("" , "rules.json" )
194+ rules := `
195+ [
196+ {
197+ "backendRefs": [
198+ {
199+ "kind": "Service",
200+ "name": "example-go",
201+ "port": 1234
202+ }
203+ ],
204+ "matches": [
205+ {
206+ "path": {
207+ "type": "PathPrefix",
208+ "value": "/get"
209+ }
210+ }
211+ ]
212+ }
213+ ]`
214+ assert .NoError (t , err )
215+ defer os .Remove (ruleFile .Name ())
216+ _ , err = ruleFile .Write ([]byte (rules ))
217+ assert .NoError (t , err )
218+ ruleFile .Close ()
219+ err = cmdr .RoutesSet ("foo" , "example-go" , ruleFile .Name ())
237220 assert .NoError (t , err )
238221
239222 assert .Equal (t , testutil .StripProgress (b .String ()), "Applying rules... done\n " , "output" )
0 commit comments