Skip to content

Instantly share code, notes, and snippets.

@sanderpick
Last active November 11, 2020 17:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sanderpick/9bd95c72c78bcf72e394e4725157572f to your computer and use it in GitHub Desktop.
Save sanderpick/9bd95c72c78bcf72e394e4725157572f to your computer and use it in GitHub Desktop.
t.Run("WithWriteValidatorAndToken", func(t *testing.T) {
t.Parallel()
db, clean := createTestDB(t)
defer clean()
sks := "CAESQBDFk9kSKooTZrbjTYXSGQkaW0U/kCudBFaLHzm8wOxzRR3Y3rFv7qQ9E0Zhgi4vP+k0vPg7NIbDo/+Cc3snNS0="
skb, err := base64.StdEncoding.DecodeString(sks)
checkErr(t, err)
sk, err := crypto.UnmarshalPrivateKey(skb)
checkErr(t, err)
tok, err := db.connector.Net.GetToken(context.Background(), thread.NewLibp2pIdentity(sk))
checkErr(t, err)
c, err := db.NewCollection(CollectionConfig{
Name: "Person",
Schema: util.SchemaFromInstance(&Person{}, false),
WriteValidator: `
return writer === 'bbaareicfdxmn5mlp52sd2e2gmgbc4lz75e2lz6b3gsdmhi77qjzxwjzvfu'
`,
})
checkErr(t, err)
newPerson := util.JSONFromInstance(Person{Name: "Alice", Age: 42})
var res []core.InstanceID
err = c.WriteTxn(func(txn *Txn) (err error) {
res, err = txn.Create(newPerson)
return
}, WithTxnToken(tok))
checkErr(t, err)
newPerson = util.JSONFromInstance(Person{ID: res[0], Name: "Alice", Age: 51})
err = c.WriteTxn(func(txn *Txn) (err error) {
err = txn.Verify(newPerson)
return
})
if err == nil {
t.Fatal("write should have been invalid")
}
newPerson = util.JSONFromInstance(Person{ID: res[0], Name: "Alice", Age: 43})
err = c.WriteTxn(func(txn *Txn) (err error) {
err = txn.Verify(newPerson)
return
}, WithTxnToken(tok))
checkErr(t, err)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment