Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions counterparty-core/counterpartycore/lib/messages/fairminter.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def validate(
problems.append(f"`{asset}` can't be fairminted.")

# check integer parameters
invalid_integer_parameter = False
for param_name, param_value in {
"price": price,
"quantity_by_price": quantity_by_price,
Expand All @@ -60,10 +61,13 @@ def validate(
if param_value != 0:
if not isinstance(param_value, int):
problems.append(f"`{param_name}` must be an integer")
invalid_integer_parameter = True
elif param_value < 0:
problems.append(f"`{param_name}` must be >= 0.")
elif param_value > config.MAX_INT:
problems.append(f"`{param_name}` exceeds maximum value")
if invalid_integer_parameter:
return problems
if quantity_by_price < 1:
problems.append("quantity_by_price must be >= 1")
# check boolean parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,16 @@ def test_validate(ledger_db, defaults):
-10, # max_mint_per_tx,
) == ["`max_mint_per_tx` must be >= 0."]

assert fairminter.validate(
ledger_db,
defaults["addresses"][1], # source
"FAIRMINTED", # asset
"", # asset_parent,
0, # price=0,
"1", # quantity_by_price,
10, # max_mint_per_tx,
) == ["`quantity_by_price` must be an integer"]

assert fairminter.validate(
ledger_db,
defaults["addresses"][1], # source
Expand Down Expand Up @@ -399,6 +409,17 @@ def test_compose(ledger_db, defaults):
b"Z\x93\x1b\x00\x00\x18\xc0\xfd\xcd\xeb_\x00\x00\x01\n\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xf4\xf4\xf5`@",
)

with pytest.raises(exceptions.ComposeError, match="quantity_by_price.*integer"):
fairminter.compose(
ledger_db,
defaults["addresses"][1], # source
"FAIRMINTED", # asset
"", # asset_parent,
0, # price=0,
"1", # quantity_by_price,
10, # max_mint_per_tx,
)

assert fairminter.compose(
ledger_db,
defaults["addresses"][1], # source
Expand Down