@@ -3,6 +3,7 @@ package route
3
3
import (
4
4
"bytes"
5
5
"encoding/json"
6
+ "errors"
6
7
"net/http"
7
8
"net/http/httptest"
8
9
"os"
@@ -134,3 +135,75 @@ func TestChangePort(t *testing.T) {
134
135
assert .NilError (t , err )
135
136
assert .Equal (t , expectedPort , result .Data )
136
137
}
138
+
139
+ func TestChangePortNegative (t * testing.T ) {
140
+ defer setup (t )(t )
141
+
142
+ expectedPort := "123"
143
+
144
+ // set
145
+ request := & model.ChangePortRequest {
146
+ Port : expectedPort ,
147
+ }
148
+
149
+ body , err := json .Marshal (request )
150
+ assert .NilError (t , err )
151
+
152
+ req , _ := http .NewRequest (http .MethodPut , "/v1/gateway/port" , bytes .NewReader (body ))
153
+ req .RemoteAddr = "127.0.0.1:0"
154
+
155
+ w := httptest .NewRecorder ()
156
+ _router .ServeHTTP (w , req )
157
+
158
+ assert .Equal (t , http .StatusOK , w .Code )
159
+ assert .Equal (t , expectedPort , "123" )
160
+
161
+ // get
162
+ req , _ = http .NewRequest (http .MethodGet , "/v1/gateway/port" , nil )
163
+
164
+ w = httptest .NewRecorder ()
165
+ _router .ServeHTTP (w , req )
166
+
167
+ assert .Equal (t , http .StatusOK , w .Code )
168
+
169
+ var result * model.Result
170
+ decoder := json .NewDecoder (w .Body )
171
+
172
+ err = decoder .Decode (& result )
173
+ assert .NilError (t , err )
174
+ assert .Equal (t , expectedPort , result .Data )
175
+
176
+ // emulate error
177
+ _state .OnGatewayPortChange (func (_ string ) error {
178
+ return errors .New ("error" )
179
+ })
180
+
181
+ // set
182
+ request .Port = "456"
183
+
184
+ body , err = json .Marshal (request )
185
+ assert .NilError (t , err )
186
+
187
+ req , _ = http .NewRequest (http .MethodPut , "/v1/gateway/port" , bytes .NewReader (body ))
188
+ req .RemoteAddr = "127.0.0.1:0"
189
+
190
+ w = httptest .NewRecorder ()
191
+ _router .ServeHTTP (w , req )
192
+
193
+ assert .Equal (t , http .StatusInternalServerError , w .Code )
194
+ assert .Equal (t , expectedPort , "123" )
195
+
196
+ // get
197
+ req , _ = http .NewRequest (http .MethodGet , "/v1/gateway/port" , nil )
198
+
199
+ w = httptest .NewRecorder ()
200
+ _router .ServeHTTP (w , req )
201
+
202
+ assert .Equal (t , http .StatusOK , w .Code )
203
+
204
+ decoder = json .NewDecoder (w .Body )
205
+
206
+ err = decoder .Decode (& result )
207
+ assert .NilError (t , err )
208
+ assert .Equal (t , expectedPort , result .Data )
209
+ }
0 commit comments