Skip to content

Commit 075c60f

Browse files
committed
Added tests
1 parent afb696c commit 075c60f

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

arduino/resources/resources_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ package resources
1818
import (
1919
"crypto"
2020
"encoding/hex"
21+
"net"
22+
"net/http"
23+
"net/url"
2124
"testing"
2225

2326
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -110,3 +113,38 @@ func TestDownloadAndChecksums(t *testing.T) {
110113
_, err = r.TestLocalArchiveChecksum(tmp)
111114
require.Error(t, err)
112115
}
116+
117+
func TestIndexDownloadAndSignatureWithinArchive(t *testing.T) {
118+
// Spawn test webserver
119+
mux := http.NewServeMux()
120+
fs := http.FileServer(http.Dir("testdata"))
121+
mux.Handle("/", fs)
122+
server := &http.Server{Handler: mux}
123+
ln, err := net.Listen("tcp", "127.0.0.1:")
124+
require.NoError(t, err)
125+
defer ln.Close()
126+
go server.Serve(ln)
127+
128+
validIdxURL, err := url.Parse("http://" + ln.Addr().String() + "/valid/package_index.tar.bz2")
129+
require.NoError(t, err)
130+
idxResource := &IndexResource{URL: validIdxURL}
131+
destDir, err := paths.MkTempDir("", "")
132+
require.NoError(t, err)
133+
defer destDir.RemoveAll()
134+
err = idxResource.Download(destDir, func(curr *rpc.DownloadProgress) {})
135+
require.NoError(t, err)
136+
require.True(t, destDir.Join("package_index.json").Exist())
137+
require.True(t, destDir.Join("package_index.json.sig").Exist())
138+
139+
invalidIdxURL, err := url.Parse("http://" + ln.Addr().String() + "/invalid/package_index.tar.bz2")
140+
require.NoError(t, err)
141+
invIdxResource := &IndexResource{URL: invalidIdxURL}
142+
invDestDir, err := paths.MkTempDir("", "")
143+
require.NoError(t, err)
144+
defer invDestDir.RemoveAll()
145+
err = invIdxResource.Download(invDestDir, func(curr *rpc.DownloadProgress) {})
146+
require.Error(t, err)
147+
require.Contains(t, err.Error(), "invalid signature")
148+
require.False(t, invDestDir.Join("package_index.json").Exist())
149+
require.False(t, invDestDir.Join("package_index.json.sig").Exist())
150+
}
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)