@@ -14,6 +14,7 @@ import (
14
14
"os"
15
15
"strings"
16
16
"testing"
17
+ "time"
17
18
18
19
"github.com/hyperledger/fabric/core/chaincode/platforms"
19
20
"github.com/hyperledger/fabric/core/chaincode/platforms/java"
@@ -44,6 +45,36 @@ func TestValidatePath(t *testing.T) {
44
45
assert .NoError (t , err )
45
46
}
46
47
48
+ func TestValidateCodePackage (t * testing.T ) {
49
+ platform := java.Platform {}
50
+ b , _ := generateMockPackegeBytes ("src/pom.xml" , 0100400 )
51
+ assert .NoError (t , platform .ValidateCodePackage (b ))
52
+
53
+ b , _ = generateMockPackegeBytes ("src/pom.xml" , 0100555 )
54
+ assert .Error (t , platform .ValidateCodePackage (b ))
55
+
56
+ b , _ = generateMockPackegeBytes ("src/build.gradle" , 0100400 )
57
+ assert .NoError (t , platform .ValidateCodePackage (b ))
58
+
59
+ b , _ = generateMockPackegeBytes ("src/build.xml" , 0100400 )
60
+ assert .Error (t , platform .ValidateCodePackage (b ))
61
+
62
+ b , _ = generateMockPackegeBytes ("src/src/Main.java" , 0100400 )
63
+ assert .NoError (t , platform .ValidateCodePackage (b ))
64
+
65
+ b , _ = generateMockPackegeBytes ("src/build/Main.java" , 0100400 )
66
+ assert .Error (t , platform .ValidateCodePackage (b ))
67
+
68
+ b , _ = generateMockPackegeBytes ("src/src/xyz/main.java" , 0100400 )
69
+ assert .NoError (t , platform .ValidateCodePackage (b ))
70
+
71
+ b , _ = generateMockPackegeBytes ("src/src/xyz/main.class" , 0100400 )
72
+ assert .Error (t , platform .ValidateCodePackage (b ))
73
+
74
+ b , _ = platform .GetDeploymentPayload (chaincodePathFolderGradle )
75
+ assert .NoError (t , platform .ValidateCodePackage (b ))
76
+ }
77
+
47
78
func TestGetDeploymentPayload (t * testing.T ) {
48
79
platform := java.Platform {}
49
80
@@ -161,3 +192,22 @@ func TestMain(m *testing.M) {
161
192
}
162
193
os .Exit (m .Run ())
163
194
}
195
+
196
+ func generateMockPackegeBytes (fileName string , mode int64 ) ([]byte , error ) {
197
+ var zeroTime time.Time
198
+ codePackage := bytes .NewBuffer (nil )
199
+ gw := gzip .NewWriter (codePackage )
200
+ tw := tar .NewWriter (gw )
201
+ payload := make ([]byte , 25 , 25 )
202
+ err := tw .WriteHeader (& tar.Header {Name : fileName , Size : int64 (len (payload )), ModTime : zeroTime , AccessTime : zeroTime , ChangeTime : zeroTime , Mode : mode })
203
+ if err != nil {
204
+ return nil , err
205
+ }
206
+ _ , err = tw .Write (payload )
207
+ if err != nil {
208
+ return nil , err
209
+ }
210
+ tw .Close ()
211
+ gw .Close ()
212
+ return codePackage .Bytes (), nil
213
+ }
0 commit comments