11import  Fixture  from  "../test/helpers/fixture" 
22import  expectThrow  from  "../test/helpers/expectThrow" 
3+ import  ethUtil  from  "ethereumjs-util" 
4+ import  ethAbi  from  "ethereumjs-abi" 
35
46const  LivepeerVerifier  =  artifacts . require ( "LivepeerVerifier" ) 
57
@@ -35,27 +37,48 @@ contract("LivepeerVerifier", accounts => {
3537        } ) 
3638    } ) 
3739
40+     describe ( "addSolver" ,  ( )  =>  { 
41+         it ( "should fail for null address" ,  async  ( )  =>  { 
42+             await  expectThrow ( verifier . addSolver ( "0x0" ) ) 
43+         } ) 
44+ 
45+         it ( "should fail if solver is already whitelisted" ,  async  ( )  =>  { 
46+             await  expectThrow ( verifier . addSolver ( accounts [ 0 ] ) ) 
47+         } ) 
48+ 
49+         it ( "should whitelist a new solver" ,  async  ( )  =>  { 
50+             await  verifier . addSolver ( accounts [ 3 ] ) 
51+ 
52+             const  isSolver  =  await  verifier . isSolver . call ( accounts [ 3 ] ) 
53+             assert . isOk ( isSolver ,  "did not whitelist new solver" ) 
54+             const  solverAddress  =  await  verifier . solvers . call ( 2 ) 
55+             assert . equal ( solverAddress ,  accounts [ 3 ] ,  "wrong solver address" ) 
56+         } ) 
57+     } ) 
58+ 
3859    describe ( "verify" ,  ( )  =>  { 
3960        const  jobId  =  0 
4061        const  claimId  =  0 
4162        const  segmentNumber  =  0 
4263        const  transcodingOptions  =  "0x123" 
4364        const  dataStorageHash  =  "0x123" 
44-         const  transcodedDataHash  =  web3 . sha3 ( "hello"  ) 
65+         const  dataHashes  =  [ web3 . sha3 ( "apple"  ) ,   web3 . sha3 ( "pear" ) ] 
4566
4667        it ( "should fail if sender is not the JobsManager" ,  async  ( )  =>  { 
47-             await  expectThrow ( verifier . verify ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  transcodedDataHash ) ) 
68+             await  expectThrow ( verifier . verify ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  dataHashes ) ) 
4869        } ) 
4970
5071        it ( "should store a request" ,  async  ( )  =>  { 
51-             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  transcodedDataHash ) 
72+             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  dataHashes ) 
5273            await  fixture . jobsManager . callVerify ( ) 
5374
75+             const  commitHash  =  ethUtil . bufferToHex ( ethAbi . soliditySHA3 ( [ "bytes" ,  "bytes" ] ,  [ ethUtil . toBuffer ( dataHashes [ 0 ] ) ,  ethUtil . toBuffer ( dataHashes [ 1 ] ) ] ) ) 
76+ 
5477            const  request  =  await  verifier . requests . call ( 0 ) 
5578            assert . equal ( request [ 0 ] ,  jobId ,  "job id incorrect" ) 
5679            assert . equal ( request [ 1 ] ,  claimId ,  "claim id incorrect" ) 
5780            assert . equal ( request [ 2 ] ,  segmentNumber ,  "segment number incorrect" ) 
58-             assert . equal ( request [ 3 ] ,  transcodedDataHash ,  "transcoded data  hash incorrect" ) 
81+             assert . equal ( request [ 3 ] ,  commitHash ,  "commit  hash incorrect" ) 
5982        } ) 
6083
6184        it ( "should fire a VerifyRequest event" ,  async  ( )  =>  { 
@@ -70,10 +93,11 @@ contract("LivepeerVerifier", accounts => {
7093                assert . equal ( result . args . segmentNumber ,  segmentNumber ,  "event segmentNumber incorrect" ) 
7194                assert . equal ( result . args . transcodingOptions ,  transcodingOptions ,  "event transcodingOptions incorrect" ) 
7295                assert . equal ( result . args . dataStorageHash ,  dataStorageHash ,  "event dataStorageHash incorrect" ) 
73-                 assert . equal ( result . args . transcodedDataHash ,  transcodedDataHash ,  "event transcodedDataHash incorrect" ) 
96+                 assert . equal ( result . args . dataHash ,  dataHashes [ 0 ] ,  "event dataHash incorrect" ) 
97+                 assert . equal ( result . args . transcodedDataHash ,  dataHashes [ 1 ] ,  "event transcodedDataHash incorrect" ) 
7498            } ) 
7599
76-             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  transcodedDataHash ) 
100+             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  dataHashes ) 
77101            await  fixture . jobsManager . callVerify ( ) 
78102        } ) 
79103    } ) 
@@ -84,14 +108,14 @@ contract("LivepeerVerifier", accounts => {
84108        const  segmentNumber  =  0 
85109        const  transcodingOptions  =  "0x123" 
86110        const  dataStorageHash  =  "0x123" 
87-         const  transcodedDataHash  =  web3 . sha3 ( "hello"  ) 
111+         const  dataHashes  =  [ web3 . sha3 ( "apple"  ) ,   web3 . sha3 ( "pear" ) ] 
88112
89113        it ( "should fail if sender is not a solver" ,  async  ( )  =>  { 
90114            await  expectThrow ( verifier . __callback ( 0 ,  "0x123" ,  { from : accounts [ 3 ] } ) ) 
91115        } ) 
92116
93117        it ( "should fire a callback event with result set to true if verification succeeded" ,  async  ( )  =>  { 
94-             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  transcodedDataHash ) 
118+             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  dataHashes ) 
95119            await  fixture . jobsManager . callVerify ( ) 
96120
97121            let  e  =  verifier . Callback ( { } ) 
@@ -106,11 +130,12 @@ contract("LivepeerVerifier", accounts => {
106130                assert . equal ( result . args . result ,  true ,  "callback result incorrect" ) 
107131            } ) 
108132
109-             await  verifier . __callback ( 0 ,  web3 . sha3 ( "hello" ) ,  { from : accounts [ 0 ] } ) 
133+             const  commitHash  =  ethUtil . bufferToHex ( ethAbi . soliditySHA3 ( [ "bytes" ,  "bytes" ] ,  [ ethUtil . toBuffer ( dataHashes [ 0 ] ) ,  ethUtil . toBuffer ( dataHashes [ 1 ] ) ] ) ) 
134+             await  verifier . __callback ( 0 ,  commitHash ,  { from : accounts [ 0 ] } ) 
110135        } ) 
111136
112137        it ( "should fire a callback event with result set to false if verification failed" ,  async  ( )  =>  { 
113-             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  transcodedDataHash ) 
138+             await  fixture . jobsManager . setVerifyParams ( jobId ,  claimId ,  segmentNumber ,  transcodingOptions ,  dataStorageHash ,  dataHashes ) 
114139            await  fixture . jobsManager . callVerify ( ) 
115140
116141            let  e  =  verifier . Callback ( { } ) 
@@ -125,7 +150,8 @@ contract("LivepeerVerifier", accounts => {
125150                assert . equal ( result . args . result ,  false ,  "callback result incorrect" ) 
126151            } ) 
127152
128-             await  verifier . __callback ( 0 ,  web3 . sha3 ( "not hello" ) ,  { from : accounts [ 0 ] } ) 
153+             const  wrongCommitHash  =  ethUtil . bufferToHex ( ethAbi . soliditySHA3 ( [ "bytes" ,  "bytes" ] ,  [ ethUtil . toBuffer ( dataHashes [ 0 ] ) ,  ethUtil . toBuffer ( web3 . sha3 ( "not pear" ) ) ] ) ) 
154+             await  verifier . __callback ( 0 ,  wrongCommitHash ,  { from : accounts [ 0 ] } ) 
129155        } ) 
130156    } ) 
131157} ) 
0 commit comments