Skip to content

Commit c50f779

Browse files
committed
Fix tests
1 parent 2382d61 commit c50f779

File tree

4 files changed

+160
-125
lines changed

4 files changed

+160
-125
lines changed

client/download_test.go

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package client
22

33
import (
4+
"archive/tar"
5+
"bytes"
6+
"compress/gzip"
7+
"context"
8+
"io"
49
"net/http"
510
"net/http/httptest"
611
"strings"
@@ -10,8 +15,7 @@ import (
1015
"github.com/stretchr/testify/require"
1116
)
1217

13-
// TestRead checks the database download functionality.
14-
func TestRead(t *testing.T) {
18+
func TestDownload(t *testing.T) {
1519
edition := metadata{
1620
EditionID: "edition-1",
1721
Date: "2024-02-02",
@@ -40,7 +44,7 @@ func TestRead(t *testing.T) {
4044
description string
4145
preserveFileTime bool
4246
server func(t *testing.T) *httptest.Server
43-
checkResult func(t *testing.T, resp *ReadResult, err error)
47+
checkResult func(t *testing.T, res DownloadResponse, err error)
4448
}{
4549
{
4650
description: "successful download",
@@ -82,16 +86,13 @@ func TestRead(t *testing.T) {
8286

8387
return server
8488
},
85-
checkResult: func(t *testing.T, resp *ReadResult, err error) {
89+
checkResult: func(t *testing.T, res DownloadResponse, err error) {
8690
require.NoError(t, err)
87-
c, rerr := io.ReadAll(resp.reader)
91+
c, rerr := io.ReadAll(res.Reader)
8892
require.NoError(t, rerr)
8993
require.Equal(t, dbContent, string(c))
90-
require.Equal(t, edition.EditionID, resp.EditionID)
91-
require.Equal(t, edition.MD5, resp.OldHash)
92-
require.Equal(t, "618dd27a10de24809ec160d6807f363f", resp.NewHash)
93-
94-
require.Equal(t, lastModified, resp.ModifiedAt)
94+
require.Equal(t, "618dd27a10de24809ec160d6807f363f", res.MD5)
95+
require.Equal(t, lastModified, res.LastModified)
9596
},
9697
},
9798
{
@@ -108,8 +109,7 @@ func TestRead(t *testing.T) {
108109
}))
109110
return server
110111
},
111-
checkResult: func(t *testing.T, resp *ReadResult, err error) {
112-
require.Nil(t, resp)
112+
checkResult: func(t *testing.T, res DownloadResponse, err error) {
113113
require.Error(t, err)
114114
require.Regexp(t, "^unexpected HTTP status code", err.Error())
115115
},
@@ -132,8 +132,7 @@ func TestRead(t *testing.T) {
132132
}))
133133
return server
134134
},
135-
checkResult: func(t *testing.T, resp *ReadResult, err error) {
136-
require.Nil(t, resp)
135+
checkResult: func(t *testing.T, res DownloadResponse, err error) {
137136
require.Error(t, err)
138137
require.Regexp(t, "^encountered an error creating GZIP reader", err.Error())
139138
},
@@ -166,8 +165,7 @@ func TestRead(t *testing.T) {
166165

167166
return server
168167
},
169-
checkResult: func(t *testing.T, resp *ReadResult, err error) {
170-
require.Nil(t, resp)
168+
checkResult: func(t *testing.T, res DownloadResponse, err error) {
171169
require.Error(t, err)
172170
require.Regexp(t, "^tar archive does not contain an mmdb file", err.Error())
173171
},
@@ -211,30 +209,32 @@ func TestRead(t *testing.T) {
211209

212210
return server
213211
},
214-
checkResult: func(t *testing.T, resp *ReadResult, err error) {
215-
require.Nil(t, resp)
212+
checkResult: func(t *testing.T, res DownloadResponse, err error) {
216213
require.Error(t, err)
217214
require.Regexp(t, "^tar archive does not contain an mmdb file", err.Error())
218215
},
219216
},
220217
}
221218

222219
ctx := context.Background()
220+
221+
accountID := 10
222+
licenseKey := "license"
223+
223224
for _, test := range tests {
224225
t.Run(test.description, func(t *testing.T) {
225226
server := test.server(t)
226227
defer server.Close()
227228

228-
r := NewHTTPReader(
229-
server.URL, // fixed, as the server is mocked above.
230-
10, // fixed, as it's not valuable for the purpose of the test.
231-
"license", // fixed, as it's not valuable for the purpose of the test.
232-
false, // verbose
233-
http.DefaultClient,
229+
c, err := New(
230+
accountID,
231+
licenseKey,
232+
WithHostname(server.URL),
234233
)
234+
require.NoError(t, err)
235235

236-
reader, err := r.get(ctx, edition.EditionID, edition.MD5)
237-
test.checkResult(t, reader, err)
236+
res, err := c.Download(ctx, edition.EditionID, edition.MD5)
237+
test.checkResult(t, res, err)
238238
})
239239
}
240240
}

client/metadata_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,22 @@ func TestGetMetadata(t *testing.T) {
6464

6565
ctx := context.Background()
6666

67+
accountID := 10
68+
licenseKey := "license"
69+
6770
for _, test := range tests {
6871
t.Run(test.description, func(t *testing.T) {
6972
server := test.server(t)
7073
defer server.Close()
7174

72-
r := NewHTTPReader(
73-
server.URL, // fixed, as the server is mocked above.
74-
10, // fixed, as it's not valuable for the purpose of the test.
75-
"license", // fixed, as it's not valuable for the purpose of the test.
76-
false, // verbose
77-
http.DefaultClient,
75+
c, err := New(
76+
accountID,
77+
licenseKey,
78+
WithHostname(server.URL),
7879
)
80+
require.NoError(t, err)
7981

80-
result, err := r.getMetadata(ctx, "edition-1")
82+
result, err := c.getMetadata(ctx, "edition-1")
8183
test.checkResult(t, result, err)
8284
})
8385
}

internal/geoipupdate/database/local_file_writer_test.go

Lines changed: 35 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -20,72 +20,67 @@ func TestLocalFileWriterWrite(t *testing.T) {
2020
checkErr func(require.TestingT, error, ...interface{})
2121
preserveFileTime bool
2222
//nolint:revive // support older versions
23-
checkTime func(require.TestingT, interface{}, interface{}, ...interface{})
24-
result *ReadResult
23+
checkTime func(require.TestingT, interface{}, interface{}, ...interface{})
24+
editionID string
25+
reader io.ReadCloser
26+
newMD5 string
27+
lastModified time.Time
2528
}{
2629
{
2730
description: "success",
2831
checkErr: require.NoError,
2932
preserveFileTime: true,
3033
checkTime: require.Equal,
31-
result: &ReadResult{
32-
reader: io.NopCloser(strings.NewReader("database content")),
33-
EditionID: "GeoIP2-City",
34-
OldHash: "",
35-
NewHash: "cfa36ddc8279b5483a5aa25e9a6151f4",
36-
ModifiedAt: testTime,
37-
},
34+
editionID: "GeoIP2-City",
35+
reader: io.NopCloser(strings.NewReader("database content")),
36+
newMD5: "cfa36ddc8279b5483a5aa25e9a6151f4",
37+
lastModified: testTime,
3838
}, {
3939
description: "hash does not match",
4040
checkErr: require.Error,
4141
preserveFileTime: true,
4242
checkTime: require.Equal,
43-
result: &ReadResult{
44-
reader: io.NopCloser(strings.NewReader("database content")),
45-
EditionID: "GeoIP2-City",
46-
OldHash: "",
47-
NewHash: "badhash",
48-
ModifiedAt: testTime,
49-
},
43+
editionID: "GeoIP2-City",
44+
reader: io.NopCloser(strings.NewReader("database content")),
45+
newMD5: "badhash",
46+
lastModified: testTime,
5047
}, {
5148
description: "hash case does not matter",
5249
checkErr: require.NoError,
5350
preserveFileTime: true,
5451
checkTime: require.Equal,
55-
result: &ReadResult{
56-
reader: io.NopCloser(strings.NewReader("database content")),
57-
EditionID: "GeoIP2-City",
58-
OldHash: "",
59-
NewHash: "cfa36ddc8279b5483a5aa25e9a6151f4",
60-
ModifiedAt: testTime,
61-
},
52+
editionID: "GeoIP2-City",
53+
reader: io.NopCloser(strings.NewReader("database content")),
54+
newMD5: "cfa36ddc8279b5483a5aa25e9a6151f4",
55+
lastModified: testTime,
6256
}, {
6357
description: "do not preserve file modification time",
6458
checkErr: require.NoError,
6559
preserveFileTime: false,
6660
checkTime: require.NotEqual,
67-
result: &ReadResult{
68-
reader: io.NopCloser(strings.NewReader("database content")),
69-
EditionID: "GeoIP2-City",
70-
OldHash: "",
71-
NewHash: "CFA36DDC8279B5483A5AA25E9A6151F4",
72-
ModifiedAt: testTime,
73-
},
61+
editionID: "GeoIP2-City",
62+
reader: io.NopCloser(strings.NewReader("database content")),
63+
newMD5: "CFA36DDC8279B5483A5AA25E9A6151F4",
64+
lastModified: testTime,
7465
},
7566
}
7667

7768
for _, test := range tests {
7869
t.Run(test.description, func(t *testing.T) {
7970
tempDir := t.TempDir()
80-
defer test.result.reader.Close()
8171

8272
fw, err := NewLocalFileWriter(tempDir, test.preserveFileTime, false)
8373
require.NoError(t, err)
8474

85-
err = fw.Write(test.result)
75+
err = fw.Write(
76+
test.editionID,
77+
test.reader,
78+
test.newMD5,
79+
test.lastModified,
80+
)
8681
test.checkErr(t, err)
8782
if err == nil {
88-
database, err := os.Stat(fw.getFilePath(test.result.EditionID))
83+
database, err := os.Stat(fw.getFilePath(test.editionID))
8984
require.NoError(t, err)
9085

9186
test.checkTime(t, database.ModTime().UTC(), testTime)
@@ -96,28 +91,23 @@ func TestLocalFileWriterWrite(t *testing.T) {
9691

9792
// TestLocalFileWriterGetHash tests functionality of the LocalFileWriter.GetHash method.
9893
func TestLocalFileWriterGetHash(t *testing.T) {
99-
result := &ReadResult{
100-
reader: io.NopCloser(strings.NewReader("database content")),
101-
EditionID: "GeoIP2-City",
102-
OldHash: "",
103-
NewHash: "cfa36ddc8279b5483a5aa25e9a6151f4",
104-
ModifiedAt: time.Time{},
105-
}
94+
editionID := "GeoIP2-City"
95+
reader := io.NopCloser(strings.NewReader("database content"))
96+
newMD5 := "cfa36ddc8279b5483a5aa25e9a6151f4"
97+
lastModified := time.Time{}
10698

10799
tempDir := t.TempDir()
108100

109-
defer result.reader.Close()
110-
111101
fw, err := NewLocalFileWriter(tempDir, false, false)
112102
require.NoError(t, err)
113103

114-
err = fw.Write(result)
104+
err = fw.Write(editionID, reader, newMD5, lastModified)
115105
require.NoError(t, err)
116106

117107
// returns the correct hash for an existing database.
118-
hash, err := fw.GetHash(result.EditionID)
108+
hash, err := fw.GetHash(editionID)
119109
require.NoError(t, err)
120-
require.Equal(t, hash, result.NewHash)
110+
require.Equal(t, hash, newMD5)
121111

122112
// returns a zero hash for a non existing edition.
123113
hash, err = fw.GetHash("NewEdition")

0 commit comments

Comments
 (0)