Skip to content

Commit 8ac9a7f

Browse files
authored
test: eskipfile remote add more test coverage (#3982)
test: eskipfile remote add more test coverage Signed-off-by: Sandor Szücs <sandor.szuecs@zalando.de>
1 parent 1e18589 commit 8ac9a7f

1 file changed

Lines changed: 69 additions & 12 deletions

File tree

eskipfile/remote_test.go

Lines changed: 69 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net"
77
"net/http"
88
"net/http/httptest"
9+
"os"
910
"sync/atomic"
1011
"testing"
1112
"time"
@@ -57,18 +58,30 @@ func TestLoadAll(t *testing.T) {
5758
routeContent string
5859
routeStatusCode int
5960
expected []*eskip.Route
61+
failOnStartup bool
6062
fail bool
61-
}{{
62-
title: "Download not existing remote file fails in NewRemoteEskipFile",
63-
routeContent: "",
64-
routeStatusCode: 404,
65-
fail: true,
66-
}, {
67-
title: "Download valid remote file",
68-
routeContent: fmt.Sprintf("VALID: %v;", routeBody),
69-
routeStatusCode: 200,
70-
expected: eskip.MustParse(fmt.Sprintf("VALID: %v;", routeBody)),
71-
},
63+
}{
64+
{
65+
title: "Download not existing remote file fails in NewRemoteEskipFile fail on startup",
66+
routeContent: "",
67+
routeStatusCode: 404,
68+
failOnStartup: true,
69+
fail: true,
70+
},
71+
{
72+
title: "Download not existing remote file fails in NewRemoteEskipFile",
73+
routeContent: "",
74+
routeStatusCode: 404,
75+
failOnStartup: false,
76+
fail: false,
77+
},
78+
{
79+
title: "Download valid remote file",
80+
routeContent: fmt.Sprintf("VALID: %v;", routeBody),
81+
routeStatusCode: 200,
82+
failOnStartup: true,
83+
expected: eskip.MustParse(fmt.Sprintf("VALID: %v;", routeBody)),
84+
},
7285
} {
7386
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
7487
w.WriteHeader(test.routeStatusCode)
@@ -77,7 +90,7 @@ func TestLoadAll(t *testing.T) {
7790
defer ts.Close()
7891

7992
t.Run(test.title, func(t *testing.T) {
80-
options := &RemoteWatchOptions{RemoteFile: ts.URL, Threshold: 10, Verbose: true, FailOnStartup: true}
93+
options := &RemoteWatchOptions{RemoteFile: ts.URL, Threshold: 10, Verbose: true, FailOnStartup: test.failOnStartup}
8194
client, err := RemoteWatch(options)
8295

8396
if test.fail {
@@ -165,6 +178,50 @@ func TestLoadAllAndUpdate(t *testing.T) {
165178
}
166179
}
167180

181+
func TestRemoteButLocalURL(t *testing.T) {
182+
client, err := RemoteWatch(&RemoteWatchOptions{RemoteFile: "fixtures/test.eskip", FailOnStartup: true})
183+
defer client.(*WatchClient).Close()
184+
require.NoError(t, err)
185+
r, err := client.LoadAll()
186+
require.NoError(t, err)
187+
assert.Equal(t, 2, len(r))
188+
}
189+
190+
func TestRemoteLoadAllFail(t *testing.T) {
191+
count := 0
192+
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
193+
switch count {
194+
case 0:
195+
// RemoteWatch() preloads
196+
count++
197+
b, err := os.ReadFile("fixtures/test.eskip")
198+
if err != nil {
199+
t.Fatalf("Failed to read file: %v", err)
200+
}
201+
w.WriteHeader(200)
202+
w.Write(b)
203+
default:
204+
// LoadAll should fail
205+
w.WriteHeader(500)
206+
w.Write([]byte(http.StatusText(500)))
207+
}
208+
}))
209+
defer server.Close()
210+
211+
client, err := RemoteWatch(&RemoteWatchOptions{RemoteFile: server.URL, FailOnStartup: true})
212+
defer client.(*remoteEskipFile).Close()
213+
require.NoError(t, err)
214+
215+
r, err := client.LoadAll()
216+
require.Error(t, err)
217+
assert.Equal(t, 0, len(r))
218+
219+
r, delR, err := client.LoadUpdate()
220+
require.Error(t, err)
221+
assert.Equal(t, 0, len(r))
222+
assert.Equal(t, 0, len(delR))
223+
}
224+
168225
func TestHTTPTimeout(t *testing.T) {
169226
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
170227
time.Sleep(2 * time.Second)

0 commit comments

Comments
 (0)