intermediary: fix ffishim for multi verify + add go tests for payment with intermediary
This commit is contained in:
parent
56009d423f
commit
4f0913b21d
|
@ -83,6 +83,59 @@ func Test_Pay(t *testing.T) {
|
|||
assert.True(t, isTokenValid)
|
||||
}
|
||||
|
||||
func Test_IntermediaryPay(t *testing.T) {
|
||||
b0Alice := 1000
|
||||
b0Bob := 100
|
||||
b0Intermediary := 100
|
||||
channelState, err := BidirectionalChannelSetup("Test Channel", false)
|
||||
assert.Nil(t, err)
|
||||
channelToken, merchState, channelState, err := BidirectionalInitMerchant(channelState, "Hub")
|
||||
assert.Nil(t, err)
|
||||
channelToken, custStateAlice, err := BidirectionalInitCustomer(channelToken, b0Alice, b0Intermediary, "Alice")
|
||||
assert.Nil(t, err)
|
||||
channelToken, custStateAlice, com, comProof, err := BidirectionalEstablishCustomerGenerateProof(channelToken, custStateAlice)
|
||||
assert.Nil(t, err)
|
||||
closeToken, err := BidirectionalEstablishMerchantIssueCloseToken(channelState, com, comProof, custStateAlice.PkC, b0Alice, b0Intermediary, merchState)
|
||||
assert.Nil(t, err)
|
||||
_, channelState, custStateAlice, err = BidirectionalVerifyCloseToken(channelState, custStateAlice, closeToken)
|
||||
assert.Nil(t, err)
|
||||
payToken, err := BidirectionalEstablishMerchantIssuePayToken(channelState, com, merchState)
|
||||
assert.Nil(t, err)
|
||||
_, channelState, custStateAlice, err = BidirectionalEstablishCustomerFinal(channelState, custStateAlice, payToken)
|
||||
assert.Nil(t, err)
|
||||
channelToken, custStateBob, err := BidirectionalInitCustomer(channelToken, b0Bob, b0Intermediary, "Bob")
|
||||
assert.Nil(t, err)
|
||||
channelToken, custStateBob, com, comProof, err = BidirectionalEstablishCustomerGenerateProof(channelToken, custStateBob)
|
||||
assert.Nil(t, err)
|
||||
closeToken, err = BidirectionalEstablishMerchantIssueCloseToken(channelState, com, comProof, custStateBob.PkC, b0Bob, b0Intermediary, merchState)
|
||||
assert.Nil(t, err)
|
||||
_, channelState, custStateBob, err = BidirectionalVerifyCloseToken(channelState, custStateBob, closeToken)
|
||||
assert.Nil(t, err)
|
||||
payToken, err = BidirectionalEstablishMerchantIssuePayToken(channelState, com, merchState)
|
||||
assert.Nil(t, err)
|
||||
_, channelState, custStateBob, err = BidirectionalEstablishCustomerFinal(channelState, custStateBob, payToken)
|
||||
assert.Nil(t, err)
|
||||
|
||||
paymentA, newCustStateAlice, err := BidirectionalPayGeneratePaymentProof(channelState, custStateAlice, 10)
|
||||
assert.Nil(t, err)
|
||||
paymentB, newCustStateBob, err := BidirectionalPayGeneratePaymentProof(channelState, custStateBob, -10)
|
||||
assert.Nil(t, err)
|
||||
closeTokenA, closeTokenB, merchState, err := BidirectionalPayVerifyMultiplePaymentProofs(channelState, paymentA, paymentB, merchState)
|
||||
assert.Nil(t, err)
|
||||
revokeTokenA, custStateAlice, err := BidirectionalPayGenerateRevokeToken(channelState, custStateAlice, newCustStateAlice, closeTokenA)
|
||||
assert.Nil(t, err)
|
||||
revokeTokenB, custStateBob, err := BidirectionalPayGenerateRevokeToken(channelState, custStateBob, newCustStateBob, closeTokenB)
|
||||
assert.Nil(t, err)
|
||||
payTokenA, payTokenB, merchState, err := BidirectionalPayVerifyMultipleRevokeTokens(revokeTokenA, revokeTokenB, merchState)
|
||||
assert.Nil(t, err)
|
||||
custStateAlice, isTokenValid, err := BidirectionalPayVerifyPaymentToken(channelState, custStateAlice, payTokenA)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, isTokenValid)
|
||||
custStateBob, isTokenValid, err = BidirectionalPayVerifyPaymentToken(channelState, custStateBob, payTokenB)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, isTokenValid)
|
||||
}
|
||||
|
||||
func Test_Close(t *testing.T) {
|
||||
b0Cust := 1000
|
||||
b0Merch := 100
|
||||
|
|
|
@ -328,7 +328,7 @@ pub mod ffishim {
|
|||
let close_token_result = bidirectional::verify_multiple_payment_proofs(rng, &channel_state, &sender_payment, &receiver_payment, &mut merch_state);
|
||||
let (sender_close_token, receiver_cond_close_token) = handle_errors!(close_token_result).unwrap();
|
||||
let ser = ["{\'sender_close_token\':\'", serde_json::to_string(&sender_close_token).unwrap().as_str(),
|
||||
"\'receiver_cond_close_token\':\'", serde_json::to_string(&receiver_cond_close_token).unwrap().as_str(),
|
||||
"\', \'receiver_cond_close_token\':\'", serde_json::to_string(&receiver_cond_close_token).unwrap().as_str(),
|
||||
"\', \'merch_state\':\'", serde_json::to_string(&merch_state).unwrap().as_str(), "\'}"].concat();
|
||||
let cser = CString::new(ser).unwrap();
|
||||
cser.into_raw()
|
||||
|
@ -397,7 +397,7 @@ pub mod ffishim {
|
|||
let (sender_pay_token, receiver_pay_token) = handle_errors!(pay_token_result).unwrap();
|
||||
|
||||
let ser = ["{\'sender_pay_token\':\'", serde_json::to_string(&sender_pay_token).unwrap().as_str(),
|
||||
"\'receiver_pay_token\':\'", serde_json::to_string(&receiver_pay_token).unwrap().as_str(),
|
||||
"\', \'receiver_pay_token\':\'", serde_json::to_string(&receiver_pay_token).unwrap().as_str(),
|
||||
"\', \'merch_state\':\'", serde_json::to_string(&merch_state).unwrap().as_str(), "\'}"].concat();
|
||||
let cser = CString::new(ser).unwrap();
|
||||
cser.into_raw()
|
||||
|
|
Loading…
Reference in New Issue