Skip to content

Instantly share code, notes, and snippets.

@asbjornenge
Created June 3, 2021 08:40
Show Gist options
  • Save asbjornenge/df466bca8fe05698846718bd83685e32 to your computer and use it in GitHub Desktop.
Save asbjornenge/df466bca8fe05698846718bd83685e32 to your computer and use it in GitHub Desktop.
TezID v1 Integration Test
@sp.add_test(name = "Call TezID from other contract")
def test():
admin = sp.test_account("admin")
user = sp.test_account("User")
user2 = sp.test_account("User2")
user3 = sp.test_account("User3")
cost = sp.tez(5)
proof1 = sp.record(
type = 'email'
)
proof2 = sp.record(
type = 'phone'
)
proofVer1 = sp.record(
tzaddr = user.address,
type = 'email'
)
proofVer2 = sp.record(
tzaddr = user.address,
type = 'phone'
)
scenario = sp.test_scenario()
c1 = TezID(admin.address, cost)
scenario += c1
c2 = ICO(c1.address, ["email","phone"])
scenario += c2
## A user with the correct valid proofs can register as participant
#
scenario += c1.registerAddress().run(sender = user, amount = sp.tez(5))
scenario += c1.registerProof(proof1).run(sender = user, amount = sp.tez(5))
scenario += c1.registerProof(proof2).run(sender = user, amount = sp.tez(5))
scenario += c1.verifyProof(proofVer1).run(sender = admin)
scenario += c1.verifyProof(proofVer2).run(sender = admin)
scenario += c2.signup().run(sender = user)
scenario.verify(c2.data.participants.contains(user.address))
## A user without the correct valid proofs cannot register as participant
#
scenario += c1.registerAddress().run(sender = user2, amount = sp.tez(5))
scenario += c1.registerProof(proof1).run(sender = user2, amount = sp.tez(5))
scenario += c1.registerProof(proof2).run(sender = user2, amount = sp.tez(5))
scenario += c1.verifyProof(proofVer1).run(sender = admin)
scenario += c2.signup().run(sender = user2)
scenario.verify(c2.data.participants.contains(user2.address) == False)
## A user not registered on TezID cannot register as participant
#
scenario += c2.signup().run(sender = user3)
scenario.verify(c2.data.participants.contains(user3.address) == False)
## Only TezID can call register endpoiint
#
emailProof = sp.record(
register_date = sp.timestamp(0),
verified = True
)
phoneProof = sp.record(
register_date = sp.timestamp(0),
verified = True
)
proofs = {}
proofs['email'] = emailProof
proofs['phone'] = phoneProof
pr = sp.record(address = user3.address, proofs = proofs)
scenario += c2.register(pr).run(sender = user3, valid=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment