@@ -14,6 +14,7 @@ import (
1414 "os"
1515 "strings"
1616 "testing"
17+ "time"
1718
1819 "github.com/hyperledger/fabric/core/chaincode/platforms"
1920 "github.com/hyperledger/fabric/core/chaincode/platforms/java"
@@ -44,6 +45,36 @@ func TestValidatePath(t *testing.T) {
4445 assert .NoError (t , err )
4546}
4647
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+
4778func TestGetDeploymentPayload (t * testing.T ) {
4879 platform := java.Platform {}
4980
@@ -161,3 +192,22 @@ func TestMain(m *testing.M) {
161192 }
162193 os .Exit (m .Run ())
163194}
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