mirror of
https://github.com/logos-storage/logos-storage-contracts-eth.git
synced 2026-01-02 13:23:10 +00:00
Add request validations (#213)
* Add request validations * Apply custom errors
This commit is contained in:
parent
500498f8bc
commit
d04acafde2
@ -19,9 +19,14 @@ contract Marketplace is SlotReservations, Proofs, StateRetrieval, Endian {
|
||||
error Marketplace_InvalidExpiry();
|
||||
error Marketplace_InvalidMaxSlotLoss();
|
||||
error Marketplace_InsufficientSlots();
|
||||
error Marketplace_InsufficientDuration();
|
||||
error Marketplace_InsufficientProofProbability();
|
||||
error Marketplace_InsufficientCollateral();
|
||||
error Marketplace_InsufficientReward();
|
||||
error Marketplace_InvalidClientAddress();
|
||||
error Marketplace_RequestAlreadyExists();
|
||||
error Marketplace_InvalidSlot();
|
||||
error Marketplace_InvalidCid();
|
||||
error Marketplace_SlotNotFree();
|
||||
error Marketplace_InvalidSlotHost();
|
||||
error Marketplace_AlreadyPaid();
|
||||
@ -126,6 +131,21 @@ contract Marketplace is SlotReservations, Proofs, StateRetrieval, Endian {
|
||||
if (request.ask.slots == 0) revert Marketplace_InsufficientSlots();
|
||||
if (request.ask.maxSlotLoss > request.ask.slots)
|
||||
revert Marketplace_InvalidMaxSlotLoss();
|
||||
if (request.ask.duration == 0) {
|
||||
revert Marketplace_InsufficientDuration();
|
||||
}
|
||||
if (request.ask.proofProbability == 0) {
|
||||
revert Marketplace_InsufficientProofProbability();
|
||||
}
|
||||
if (request.ask.collateral == 0) {
|
||||
revert Marketplace_InsufficientCollateral();
|
||||
}
|
||||
if (request.ask.reward == 0) {
|
||||
revert Marketplace_InsufficientReward();
|
||||
}
|
||||
if (bytes(request.content.cid).length == 0) {
|
||||
revert Marketplace_InvalidCid();
|
||||
}
|
||||
|
||||
_requests[id] = request;
|
||||
_requestContexts[id].endsAt = block.timestamp + request.ask.duration;
|
||||
|
||||
@ -238,6 +238,44 @@ describe("Marketplace", function () {
|
||||
"Marketplace_RequestAlreadyExists"
|
||||
)
|
||||
})
|
||||
|
||||
it("is rejected when insufficient duration", async function () {
|
||||
request.ask.duration = 0
|
||||
await expect(marketplace.requestStorage(request)).to.be.revertedWith(
|
||||
// request.expiry has to be > 0 and
|
||||
// request.expiry < request.ask.duration
|
||||
// so request.ask.duration will trigger "Marketplace_InvalidExpiry"
|
||||
"Marketplace_InvalidExpiry"
|
||||
)
|
||||
})
|
||||
|
||||
it("is rejected when insufficient proofProbability", async function () {
|
||||
request.ask.proofProbability = 0
|
||||
await expect(marketplace.requestStorage(request)).to.be.revertedWith(
|
||||
"Marketplace_InsufficientProofProbability"
|
||||
)
|
||||
})
|
||||
|
||||
it("is rejected when insufficient collateral", async function () {
|
||||
request.ask.collateral = 0
|
||||
await expect(marketplace.requestStorage(request)).to.be.revertedWith(
|
||||
"Marketplace_InsufficientCollateral"
|
||||
)
|
||||
})
|
||||
|
||||
it("is rejected when insufficient reward", async function () {
|
||||
request.ask.reward = 0
|
||||
await expect(marketplace.requestStorage(request)).to.be.revertedWith(
|
||||
"Marketplace_InsufficientReward"
|
||||
)
|
||||
})
|
||||
|
||||
it("is rejected when cid is missing", async function () {
|
||||
request.content.cid = ""
|
||||
await expect(marketplace.requestStorage(request)).to.be.revertedWith(
|
||||
"Marketplace_InvalidCid"
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("filling a slot with collateral", function () {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user