@@ -1953,7 +1953,7 @@ fn add_balance_restricted_correctly() {
1953
1953
rt. set_value ( amount) ;
1954
1954
1955
1955
// set caller to not-builtin
1956
- rt. set_caller ( make_identity_cid ( b"1234" ) , Address :: new_id ( 1000 ) ) ;
1956
+ rt. set_caller ( make_identity_cid ( b"1234" ) , Address :: new_id ( 1234 ) ) ;
1957
1957
1958
1958
// cannot call the unexported method num
1959
1959
expect_abort_contains_message (
@@ -1975,3 +1975,93 @@ fn add_balance_restricted_correctly() {
1975
1975
1976
1976
rt. verify ( ) ;
1977
1977
}
1978
+
1979
+ #[ test]
1980
+ fn psd_restricted_correctly ( ) {
1981
+ let mut rt = setup ( ) ;
1982
+
1983
+ let deal = generate_deal_proposal (
1984
+ CLIENT_ADDR ,
1985
+ PROVIDER_ADDR ,
1986
+ ChainEpoch :: from ( 1 ) ,
1987
+ 200 * EPOCHS_IN_DAY ,
1988
+ ) ;
1989
+
1990
+ // Client gets enough funds
1991
+ add_participant_funds ( & mut rt, CLIENT_ADDR , deal. client_balance_requirement ( ) ) ;
1992
+
1993
+ // Provider has enough funds
1994
+ rt. set_caller ( * ACCOUNT_ACTOR_CODE_ID , OWNER_ADDR ) ;
1995
+ rt. set_value ( deal. provider_balance_requirement ( ) . clone ( ) ) ;
1996
+ rt. expect_validate_caller_any ( ) ;
1997
+ expect_provider_control_address ( & mut rt, PROVIDER_ADDR , OWNER_ADDR , WORKER_ADDR ) ;
1998
+
1999
+ assert_eq ! (
2000
+ RawBytes :: default ( ) ,
2001
+ rt. call:: <MarketActor >(
2002
+ Method :: AddBalance as u64 ,
2003
+ & RawBytes :: serialize( PROVIDER_ADDR ) . unwrap( ) ,
2004
+ )
2005
+ . unwrap( )
2006
+ ) ;
2007
+
2008
+ rt. verify ( ) ;
2009
+
2010
+ // Prep the message
2011
+
2012
+ let buf = RawBytes :: serialize ( & deal) . expect ( "failed to marshal deal proposal" ) ;
2013
+
2014
+ let sig = Signature :: new_bls ( buf. to_vec ( ) ) ;
2015
+
2016
+ let params = PublishStorageDealsParams {
2017
+ deals : vec ! [ ClientDealProposal { proposal: deal. clone( ) , client_signature: sig } ] ,
2018
+ } ;
2019
+
2020
+ // set caller to not-builtin
2021
+ rt. set_caller ( make_identity_cid ( b"1234" ) , WORKER_ADDR ) ;
2022
+
2023
+ // cannot call the unexported method num
2024
+ expect_abort_contains_message (
2025
+ ExitCode :: USR_FORBIDDEN ,
2026
+ "must be built-in" ,
2027
+ rt. call :: < MarketActor > (
2028
+ Method :: PublishStorageDeals as MethodNum ,
2029
+ & RawBytes :: serialize ( params. clone ( ) ) . unwrap ( ) ,
2030
+ ) ,
2031
+ ) ;
2032
+
2033
+ // can call the exported method num
2034
+
2035
+ let authenticate_param1 = RawBytes :: serialize ( AuthenticateMessageParams {
2036
+ signature : buf. to_vec ( ) ,
2037
+ message : buf. to_vec ( ) ,
2038
+ } )
2039
+ . unwrap ( ) ;
2040
+
2041
+ rt. expect_validate_caller_any ( ) ;
2042
+ expect_provider_control_address ( & mut rt, PROVIDER_ADDR , OWNER_ADDR , WORKER_ADDR ) ;
2043
+ expect_query_network_info ( & mut rt) ;
2044
+
2045
+ rt. expect_send (
2046
+ deal. client ,
2047
+ AUTHENTICATE_MESSAGE_METHOD as u64 ,
2048
+ authenticate_param1,
2049
+ TokenAmount :: zero ( ) ,
2050
+ RawBytes :: default ( ) ,
2051
+ ExitCode :: OK ,
2052
+ ) ;
2053
+
2054
+ let ret: PublishStorageDealsReturn = rt
2055
+ . call :: < MarketActor > (
2056
+ Method :: PublishStorageDealsExported as MethodNum ,
2057
+ & RawBytes :: serialize ( params) . unwrap ( ) ,
2058
+ )
2059
+ . unwrap ( )
2060
+ . deserialize ( )
2061
+ . unwrap ( ) ;
2062
+
2063
+ assert ! ( ret. valid_deals. get( 0 ) ) ;
2064
+
2065
+ rt. verify ( ) ;
2066
+ check_state ( & rt) ;
2067
+ }
0 commit comments