Skip to content

Commit a760984

Browse files
author
Yash Agrawal
committed
feat: add test cases related to transfers
1 parent ceb4cb6 commit a760984

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

test/SBT.test.ts

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ethers } from 'hardhat'
12
import { expect, use } from 'chai'
23
import { solidity } from 'ethereum-waffle'
34
import { type Contract, constants } from 'ethers'
@@ -312,6 +313,160 @@ describe('SBT', () => {
312313
.transferFrom(signers.userA.address, signers.minterA.address, 0)
313314
).to.revertedWith('SBT can not transfer')
314315
})
316+
317+
it('The transfer function should not work if approved operator', async () => {
318+
const sbt = await init()
319+
const signers = await getSigners()
320+
321+
const metadata = await getDummyEncodedMetadata(sbt)
322+
await expect(
323+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
324+
)
325+
.to.emit(sbt, 'Minted')
326+
.withArgs(0, signers.userA.address)
327+
328+
await sbt
329+
.connect(signers.userA)
330+
.setApprovalForAll(signers.userB.address, true)
331+
await expect(
332+
sbt
333+
.connect(signers.userB)
334+
.transferFrom(signers.userA.address, signers.minterA.address, 0)
335+
).to.revertedWith('SBT can not transfer')
336+
})
337+
})
338+
339+
describe('burn', () => {
340+
it('The transfer to address(0) should not work if owner', async () => {
341+
const sbt = await init()
342+
const signers = await getSigners()
343+
344+
const metadata = await getDummyEncodedMetadata(sbt)
345+
await expect(
346+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
347+
)
348+
.to.emit(sbt, 'Minted')
349+
.withArgs(0, signers.userA.address)
350+
351+
await expect(
352+
sbt
353+
.connect(signers.userA)
354+
.transferFrom(signers.userA.address, constants.AddressZero, 0)
355+
).to.revertedWith('ERC721: transfer to the zero address')
356+
})
357+
358+
it('The transfer to address(0) should not work if approved user', async () => {
359+
const sbt = await init()
360+
const signers = await getSigners()
361+
362+
const metadata = await getDummyEncodedMetadata(sbt)
363+
await expect(
364+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
365+
)
366+
.to.emit(sbt, 'Minted')
367+
.withArgs(0, signers.userA.address)
368+
369+
await sbt.connect(signers.userA).approve(signers.userB.address, 0)
370+
await expect(
371+
sbt
372+
.connect(signers.userB)
373+
.transferFrom(signers.userA.address, constants.AddressZero, 0)
374+
).to.revertedWith('ERC721: transfer to the zero address')
375+
})
376+
377+
it('The transfer to address(0) should not work if approved operator', async () => {
378+
const sbt = await init()
379+
const signers = await getSigners()
380+
381+
const metadata = await getDummyEncodedMetadata(sbt)
382+
await expect(
383+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
384+
)
385+
.to.emit(sbt, 'Minted')
386+
.withArgs(0, signers.userA.address)
387+
388+
await sbt
389+
.connect(signers.userA)
390+
.setApprovalForAll(signers.userB.address, true)
391+
await expect(
392+
sbt
393+
.connect(signers.userB)
394+
.transferFrom(signers.userA.address, constants.AddressZero, 0)
395+
).to.revertedWith('ERC721: transfer to the zero address')
396+
})
397+
})
398+
399+
describe('safeTransfer', () => {
400+
it('The safeTransfer function should not work if owner', async () => {
401+
const sbtContractFactory = await ethers.getContractFactory('SBT')
402+
const sbt = sbtContractFactory.attach((await init()).address)
403+
const signers = await getSigners()
404+
405+
const metadata = await getDummyEncodedMetadata(sbt)
406+
await expect(
407+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
408+
)
409+
.to.emit(sbt, 'Minted')
410+
.withArgs(0, signers.userA.address)
411+
412+
await expect(
413+
sbt
414+
.connect(signers.userA)
415+
['safeTransferFrom(address,address,uint256)'](
416+
signers.userA.address,
417+
signers.userB.address,
418+
0
419+
)
420+
).to.revertedWith('SBT can not transfer')
421+
})
422+
423+
it('The safeTransfer function should not work if approved user', async () => {
424+
const sbt = await init()
425+
const signers = await getSigners()
426+
427+
const metadata = await getDummyEncodedMetadata(sbt)
428+
await expect(
429+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
430+
)
431+
.to.emit(sbt, 'Minted')
432+
.withArgs(0, signers.userA.address)
433+
434+
await sbt.connect(signers.userA).approve(signers.userB.address, 0)
435+
await expect(
436+
sbt
437+
.connect(signers.userB)
438+
['safeTransferFrom(address,address,uint256)'](
439+
signers.userA.address,
440+
signers.minterA.address,
441+
0
442+
)
443+
).to.revertedWith('SBT can not transfer')
444+
})
445+
446+
it('The safeTransfer function should not work if approved operator', async () => {
447+
const sbt = await init()
448+
const signers = await getSigners()
449+
450+
const metadata = await getDummyEncodedMetadata(sbt)
451+
await expect(
452+
sbt.connect(signers.minterA).mint(signers.userA.address, metadata)
453+
)
454+
.to.emit(sbt, 'Minted')
455+
.withArgs(0, signers.userA.address)
456+
457+
await sbt
458+
.connect(signers.userA)
459+
.setApprovalForAll(signers.userB.address, true)
460+
await expect(
461+
sbt
462+
.connect(signers.userB)
463+
['safeTransferFrom(address,address,uint256)'](
464+
signers.userA.address,
465+
signers.minterA.address,
466+
0
467+
)
468+
).to.revertedWith('SBT can not transfer')
469+
})
315470
})
316471

317472
describe('setTokenURI', () => {

0 commit comments

Comments
 (0)