Skip to content

Commit 69fc9cf

Browse files
committed
separate account for maker
1 parent b0579d3 commit 69fc9cf

File tree

2 files changed

+42
-33
lines changed
  • noir-projects/noir-contracts/contracts/app/orderbook_contract/src/test

2 files changed

+42
-33
lines changed

noir-projects/noir-contracts/contracts/app/orderbook_contract/src/test/test.nr

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@ global FULFILL_ORDER_AUTHWIT_NONCE: Field = 2;
1313

1414
#[test]
1515
unconstrained fn create_order_happy_path() {
16-
let (mut env, orderbook_address, token0_address, token1_address, owner) =
16+
let (mut env, orderbook_address, token0_address, token1_address, minter, maker) =
1717
setup_orderbook_with_tokens(true);
1818

1919
let token0 = Token::at(token0_address);
2020
let orderbook = Orderbook::at(orderbook_address);
2121

22-
// Mint tokens to owner
23-
env.call_private(owner, Token::at(token0_address).mint_to_private(owner, BID_AMOUNT));
22+
// Mint tokens to maker
23+
env.call_private(minter, Token::at(token0_address).mint_to_private(maker, BID_AMOUNT));
2424

2525
// Create authwit for transferring tokens to orderbook
2626
let transfer_call_interface =
27-
token0.transfer_to_public(owner, orderbook_address, BID_AMOUNT, CREATE_ORDER_AUTHWIT_NONCE);
28-
add_private_authwit_from_call_interface(owner, orderbook_address, transfer_call_interface);
27+
token0.transfer_to_public(maker, orderbook_address, BID_AMOUNT, CREATE_ORDER_AUTHWIT_NONCE);
28+
add_private_authwit_from_call_interface(maker, orderbook_address, transfer_call_interface);
2929

3030
// Create order
3131
let _order_id = env.call_private(
32-
owner,
32+
maker,
3333
orderbook.create_order(
3434
token0_address,
3535
token1_address,
@@ -41,12 +41,12 @@ unconstrained fn create_order_happy_path() {
4141

4242
// Verify tokens were transferred to orderbook's public balance
4343
assert_eq(env.view_public(token0.balance_of_public(orderbook_address)), BID_AMOUNT);
44-
assert_eq(env.simulate_utility(token0.balance_of_private(owner)), 0);
44+
assert_eq(env.simulate_utility(token0.balance_of_private(maker)), 0);
4545
}
4646

4747
#[test]
4848
unconstrained fn full_flow() {
49-
let (mut env, orderbook_address, token0_address, token1_address, maker) =
49+
let (mut env, orderbook_address, token0_address, token1_address, minter, maker) =
5050
setup_orderbook_with_tokens(true);
5151

5252
let token0 = Token::at(token0_address);
@@ -55,10 +55,9 @@ unconstrained fn full_flow() {
5555

5656
let taker = env.create_contract_account();
5757

58-
// Setup: mint tokens to maker and taker
59-
60-
env.call_private(maker, token0.mint_to_private(maker, BID_AMOUNT));
61-
env.call_private(maker, token1.mint_to_private(taker, ASK_AMOUNT));
58+
// Mint tokens to maker and taker
59+
env.call_private(minter, token0.mint_to_private(maker, BID_AMOUNT));
60+
env.call_private(minter, token1.mint_to_private(taker, ASK_AMOUNT));
6261

6362
// Create order first
6463
let transfer_call_interface =
@@ -119,15 +118,15 @@ unconstrained fn full_flow() {
119118

120119
#[test(should_fail_with = "ZERO_BID_AMOUNT")]
121120
unconstrained fn create_order_zero_bid_amount() {
122-
let (mut env, orderbook_address, token0_address, token1_address, owner) =
121+
let (mut env, orderbook_address, token0_address, token1_address, _, maker) =
123122
setup_orderbook_with_tokens(false);
124123

125124
let orderbook = Orderbook::at(orderbook_address);
126125

127126
let bid_amount = 0 as u128;
128127

129128
let _order_id = env.call_private(
130-
owner,
129+
maker,
131130
orderbook.create_order(
132131
token0_address,
133132
token1_address,
@@ -140,15 +139,15 @@ unconstrained fn create_order_zero_bid_amount() {
140139

141140
#[test(should_fail_with = "ZERO_ASK_AMOUNT")]
142141
unconstrained fn create_order_zero_ask_amount() {
143-
let (mut env, orderbook_address, token0_address, token1_address, owner) =
142+
let (mut env, orderbook_address, token0_address, token1_address, _, maker) =
144143
setup_orderbook_with_tokens(false);
145144

146145
let orderbook = Orderbook::at(orderbook_address);
147146

148147
let ask_amount = 0 as u128;
149148

150149
let _order_id = env.call_private(
151-
owner,
150+
maker,
152151
orderbook.create_order(
153152
token0_address,
154153
token1_address,
@@ -161,15 +160,15 @@ unconstrained fn create_order_zero_ask_amount() {
161160

162161
#[test(should_fail_with = "BID_TOKEN_IS_INVALID")]
163162
unconstrained fn create_order_invalid_bid_token() {
164-
let (mut env, orderbook_address, _token0_address, token1_address, owner) =
163+
let (mut env, orderbook_address, _token0_address, token1_address, _, maker) =
165164
setup_orderbook_with_tokens(false);
166165

167166
let orderbook = Orderbook::at(orderbook_address);
168167

169168
let invalid_token = AztecAddress::from_field(999);
170169

171170
let _order_id = env.call_private(
172-
owner,
171+
maker,
173172
orderbook.create_order(
174173
invalid_token,
175174
token1_address,
@@ -182,15 +181,15 @@ unconstrained fn create_order_invalid_bid_token() {
182181

183182
#[test(should_fail_with = "ASK_TOKEN_IS_INVALID")]
184183
unconstrained fn create_order_invalid_ask_token() {
185-
let (mut env, orderbook_address, token0_address, _token1_address, owner) =
184+
let (mut env, orderbook_address, token0_address, _token1_address, _, maker) =
186185
setup_orderbook_with_tokens(false);
187186

188187
let orderbook = Orderbook::at(orderbook_address);
189188

190189
let invalid_token = AztecAddress::from_field(999);
191190

192191
let _order_id = env.call_private(
193-
owner,
192+
maker,
194193
orderbook.create_order(
195194
token0_address,
196195
invalid_token,
@@ -203,13 +202,13 @@ unconstrained fn create_order_invalid_ask_token() {
203202

204203
#[test(should_fail_with = "SAME_TOKEN_TRADE")]
205204
unconstrained fn create_order_same_tokens() {
206-
let (mut env, orderbook_address, token0_address, _token1_address, owner) =
205+
let (mut env, orderbook_address, token0_address, _token1_address, _, maker) =
207206
setup_orderbook_with_tokens(false);
208207

209208
let orderbook = Orderbook::at(orderbook_address);
210209

211210
let _order_id = env.call_private(
212-
owner,
211+
maker,
213212
orderbook.create_order(
214213
token0_address,
215214
token0_address,

noir-projects/noir-contracts/contracts/app/orderbook_contract/src/test/utils.nr

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,60 @@ use token::Token;
66

77
// Utility function to setup two token contracts
88
// TODO(#16560): Make it possible to return a contract instance directly from setup func
9-
pub(crate) unconstrained fn setup_tokens(
9+
unconstrained fn setup_tokens(
1010
env: &mut TestEnvironment,
11-
owner: AztecAddress,
11+
admin: AztecAddress,
1212
) -> (AztecAddress, AztecAddress) {
1313
// Deploy first token contract
1414
let token0_initializer = Token::interface().constructor(
15-
owner,
15+
admin,
1616
"Token00000000000000000000000000",
1717
"TK00000000000000000000000000000",
1818
18,
1919
);
2020
let token0_address =
21-
env.deploy("@token_contract/Token").with_public_initializer(owner, token0_initializer);
21+
env.deploy("@token_contract/Token").with_public_initializer(admin, token0_initializer);
2222

2323
// Deploy second token contract
2424
let token1_initializer = Token::interface().constructor(
25-
owner,
25+
admin,
2626
"Token11111111111111111111111111",
2727
"TK11111111111111111111111111111",
2828
18,
2929
);
3030
let token1_address =
31-
env.deploy("@token_contract/Token").with_public_initializer(owner, token1_initializer);
31+
env.deploy("@token_contract/Token").with_public_initializer(admin, token1_initializer);
3232

3333
(token0_address, token1_address)
3434
}
3535

3636
// Utility function to setup orderbook with two tokens
3737
pub(crate) unconstrained fn setup_orderbook_with_tokens(
3838
with_account_contracts: bool,
39-
) -> (TestEnvironment, AztecAddress, AztecAddress, AztecAddress, AztecAddress) {
39+
) -> (TestEnvironment, AztecAddress, AztecAddress, AztecAddress, AztecAddress, AztecAddress) {
4040
let mut env = TestEnvironment::new();
41-
let owner = if with_account_contracts {
41+
let admin = if with_account_contracts {
4242
env.create_contract_account()
4343
} else {
4444
env.create_light_account()
4545
};
4646

47-
let (token0_address, token1_address) = setup_tokens(&mut env, owner);
47+
let maker = if with_account_contracts {
48+
env.create_contract_account()
49+
} else {
50+
env.create_light_account()
51+
};
52+
53+
let (token0_address, token1_address) = setup_tokens(&mut env, admin);
4854

4955
// Deploy orderbook contract
5056
let orderbook_initializer = Orderbook::interface().constructor(token0_address, token1_address);
5157
let orderbook_address =
52-
env.deploy("Orderbook").with_public_initializer(owner, orderbook_initializer);
58+
env.deploy("Orderbook").with_public_initializer(admin, orderbook_initializer);
59+
60+
// Admin has minter role and since where this function is used we care about minter role and not about admin role
61+
// we name the return value a minter.
62+
let minter = admin;
5363

54-
(env, orderbook_address, token0_address, token1_address, owner)
64+
(env, orderbook_address, token0_address, token1_address, minter, maker)
5565
}

0 commit comments

Comments
 (0)