@@ -20,6 +20,7 @@ import (
20
20
"crypto/x509"
21
21
"encoding/json"
22
22
"encoding/pem"
23
+ "fmt"
23
24
"io"
24
25
"net/http"
25
26
"net/http/httptest"
@@ -48,34 +49,68 @@ func TestValidSignatureKey(t *testing.T) {
48
49
require .NotNil (t , key )
49
50
}
50
51
51
- func TestInstallToolDifferentContentType (t * testing.T ) {
52
+ func TestInstallToolV2 (t * testing.T ) {
52
53
r := gin .New ()
53
54
goa := v2 .Server (config .GetDataDir ().String ())
54
55
r .Any ("/v2/*path" , gin .WrapH (goa ))
55
56
ts := httptest .NewServer (r )
56
57
57
- URL := "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linux64.tar.gz"
58
- Checksum := "SHA-256:1ae54999c1f97234a5c603eb99ad39313b11746a4ca517269a9285afa05f9100"
59
- request := tools.ToolPayload {
58
+ type test struct {
59
+ request tools.ToolPayload
60
+ responseCode int
61
+ responseBody string
62
+ }
63
+
64
+ BossacURL := "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linux64.tar.gz"
65
+ BossacChecksum := "SHA-256:1ae54999c1f97234a5c603eb99ad39313b11746a4ca517269a9285afa05f9100"
66
+ BossacSignature := "382898a97b5a86edd74208f10107d2fecbf7059ffe9cc856e045266fb4db4e98802728a0859cfdcda1c0b9075ec01e42dbea1f430b813530d5a6ae1766dfbba64c3e689b59758062dc2ab2e32b2a3491dc2b9a80b9cda4ae514fbe0ec5af210111b6896976053ab76bac55bcecfcececa68adfa3299e3cde6b7f117b3552a7d80ca419374bb497e3c3f12b640cf5b20875416b45e662fc6150b99b178f8e41d6982b4c0a255925ea39773683f9aa9201dc5768b6fc857c87ff602b6a93452a541b8ec10ca07f166e61a9e9d91f0a6090bd2038ed4427af6251039fb9fe8eb62ec30d7b0f3df38bc9de7204dec478fb86f8eb3f71543710790ee169dce039d3e0"
67
+ bossacInstallURLOK := tools.ToolPayload {
68
+ Name : "bossac" ,
69
+ Version : "1.7.0-arduino3" ,
70
+ Packager : "arduino" ,
71
+ URL : & BossacURL ,
72
+ Checksum : & BossacChecksum ,
73
+ Signature : & BossacSignature ,
74
+ }
75
+
76
+ WrongSignature := "wr0ngs1gn4tur3"
77
+ bossacInstallWrongSig := tools.ToolPayload {
78
+ Name : "bossac" ,
79
+ Version : "1.7.0-arduino3" ,
80
+ Packager : "arduino" ,
81
+ URL : & BossacURL ,
82
+ Checksum : & BossacChecksum ,
83
+ Signature : & WrongSignature ,
84
+ }
85
+
86
+ bossacInstallNoURL := tools.ToolPayload {
60
87
Name : "bossac" ,
61
88
Version : "1.7.0-arduino3" ,
62
89
Packager : "arduino" ,
63
- URL : & URL ,
64
- Checksum : & Checksum ,
65
90
}
66
91
67
- payload , err := json .Marshal (request )
68
- require .NoError (t , err )
92
+ tests := []test {
93
+ {bossacInstallURLOK , http .StatusOK , "ok" },
94
+ {bossacInstallWrongSig , http .StatusInternalServerError , "verification error" },
95
+ {bossacInstallNoURL , http .StatusBadRequest , "tool not found" }, //because the index is not added
96
+ }
97
+
98
+ for _ , test := range tests {
99
+ t .Run (fmt .Sprintf ("Installing %s" , test .request .Name ), func (t * testing.T ) {
100
+ payload , err := json .Marshal (test .request )
101
+ require .NoError (t , err )
69
102
70
- // for some reason the fronted sends requests with "text/plain" content type.
71
- // Even if the request body contains a json object.
72
- // With this test we verify is parsed correctly.
73
- for _ , encoding := range []string {"encoding/json" , "text/plain" } {
74
- resp , err := http .Post (ts .URL + "/v2/pkgs/tools/installed" , encoding , bytes .NewBuffer (payload ))
75
- require .NoError (t , err )
76
- body , err := io .ReadAll (resp .Body )
77
- require .NoError (t , err )
78
- require .Contains (t , string (body ), "ok" )
79
- require .Equal (t , http .StatusOK , resp .StatusCode )
103
+ // for some reason the fronted sends requests with "text/plain" content type.
104
+ // Even if the request body contains a json object.
105
+ // With this test we verify is parsed correctly.
106
+ for _ , encoding := range []string {"encoding/json" , "text/plain" } {
107
+ resp , err := http .Post (ts .URL + "/v2/pkgs/tools/installed" , encoding , bytes .NewBuffer (payload ))
108
+ require .NoError (t , err )
109
+ body , err := io .ReadAll (resp .Body )
110
+ require .NoError (t , err )
111
+ require .Contains (t , string (body ), test .responseBody )
112
+ require .Equal (t , test .responseCode , resp .StatusCode )
113
+ }
114
+ })
80
115
}
81
116
}
0 commit comments