test: improvement on the generator, small fixes

This commit is contained in:
Michael Muré
2024-12-04 19:55:29 +01:00
parent 72e0f353e7
commit 0f59088d0b
9 changed files with 268 additions and 98 deletions

View File

@@ -129,3 +129,15 @@ func Personas() []Persona {
PersonaFrank, PersonaFrank,
} }
} }
// DidToName retrieve the persona's name from its DID.
func DidToName(d did.DID) string {
return map[did.DID]string{
PersonaAlice.DID(): "Alice",
PersonaBob.DID(): "Bob",
PersonaCarol.DID(): "Carol",
PersonaDan.DID(): "Dan",
PersonaErin.DID(): "Erin",
PersonaFrank.DID(): "Frank",
}[d]
}

View File

@@ -257,17 +257,17 @@ const (
) )
var ( var (
once sync.Once once sync.Once
ts *schema.TypeSystem ts *schema.TypeSystem
err error errSchema error
) )
func argsType() schema.Type { func argsType() schema.Type {
once.Do(func() { once.Do(func() {
ts, err = ipld.LoadSchemaBytes([]byte(argsSchema)) ts, errSchema = ipld.LoadSchemaBytes([]byte(argsSchema))
}) })
if err != nil { if errSchema != nil {
panic(err) panic(errSchema)
} }
return ts.TypeByName(argsName) return ts.TypeByName(argsName)

View File

@@ -213,33 +213,60 @@ func (g *generator) writeGoFile() error {
err = f.Close() err = f.Close()
}() }()
fmt.Fprintln(f, "// Code generated by delegationtest - DO NOT EDIT.") _, _ = fmt.Fprintln(f, "// Code generated by delegationtest - DO NOT EDIT.")
fmt.Fprintln(f) _, _ = fmt.Fprintln(f)
fmt.Fprintln(f, "package delegationtest") _, _ = fmt.Fprintln(f, "package delegationtest")
fmt.Fprintln(f) _, _ = fmt.Fprintln(f)
fmt.Fprintln(f, "import \"github.com/ipfs/go-cid\"") _, _ = fmt.Fprintln(f, "import (")
_, _ = fmt.Fprintln(f, "\t\"github.com/ipfs/go-cid\"")
_, _ = fmt.Fprintln(f)
_, _ = fmt.Fprintln(f, "\t\"github.com/ucan-wg/go-ucan/token/delegation\"")
_, _ = fmt.Fprintln(f, ")")
refs := make(map[cid.Cid]string, len(g.dlgs)) refs := make(map[cid.Cid]string, len(g.dlgs))
for _, d := range g.dlgs { for _, d := range g.dlgs {
refs[d.id] = d.name + "CID" refs[d.id] = d.name + "CID"
fmt.Fprintln(f) _, _ = fmt.Fprintln(f)
fmt.Fprintln(f, "var (") _, _ = fmt.Fprintln(f, "var (")
fmt.Fprintf(f, "\t%s = cid.MustParse(\"%s\")\n", d.name+"CID", d.id.String()) _, _ = fmt.Fprintf(f, "\t%sCID = cid.MustParse(\"%s\")\n", d.name, d.id.String())
fmt.Fprintf(f, "\t%s = mustGetDelegation(%s)\n", d.name, d.name+"CID") _, _ = fmt.Fprintf(f, "\t%sSealed = mustGetBundle(%s).Sealed\n", d.name, d.name+"CID")
fmt.Fprintln(f, ")") _, _ = fmt.Fprintf(f, "\t%sBundle = mustGetBundle(%s)\n", d.name, d.name+"CID")
_, _ = fmt.Fprintf(f, "\t%s = mustGetBundle(%s).Decoded\n", d.name, d.name+"CID")
_, _ = fmt.Fprintln(f, ")")
} }
_, _ = fmt.Fprintln(f)
_, _ = fmt.Fprintln(f, "var AllTokens = []*delegation.Token{")
for _, d := range g.dlgs {
_, _ = fmt.Fprintf(f, "\t%s,\n", d.name)
}
_, _ = fmt.Fprintln(f, "}")
_, _ = fmt.Fprintln(f)
_, _ = fmt.Fprintln(f, "var AllBundles = []*delegation.Bundle{")
for _, d := range g.dlgs {
_, _ = fmt.Fprintf(f, "\t%sBundle,\n", d.name)
}
_, _ = fmt.Fprintln(f, "}")
_, _ = fmt.Fprintln(f)
_, _ = fmt.Fprintln(f, "var cidToName = map[cid.Cid]string{")
for _, d := range g.dlgs {
_, _ = fmt.Fprintf(f, "\t%sCID: \"%s\",\n", d.name, d.name)
}
_, _ = fmt.Fprintln(f, "}")
for _, c := range g.chains { for _, c := range g.chains {
fmt.Fprintln(f) _, _ = fmt.Fprintln(f)
fmt.Fprintf(f, "var %s = []cid.Cid{\n", c.name) _, _ = fmt.Fprintf(f, "var %s = []cid.Cid{\n", c.name)
for _, d := range slices.Backward(c.prf) { for _, d := range slices.Backward(c.prf) {
fmt.Fprintf(f, "\t%s,\n", refs[d]) _, _ = fmt.Fprintf(f, "\t%s,\n", refs[d])
} }
fmt.Fprintln(f, "}") _, _ = fmt.Fprintln(f, "}")
} }
return err return err

View File

@@ -18,12 +18,12 @@ var (
// Execution of this command is generally prohibited in tests. // Execution of this command is generally prohibited in tests.
ExpandedCommand = command.MustParse("/expanded") ExpandedCommand = command.MustParse("/expanded")
// NominalCommand is the command used for most test tokens and proof- // NominalCommand is the command used for most test tokens and proof-chains.
// chains. Execution of this command is generally allowed in tests. // Execution of this command is generally allowed in tests.
NominalCommand = ExpandedCommand.Join("nominal") NominalCommand = ExpandedCommand.Join("nominal")
// AttenuatedCommand is a sub-command of the NominalCommand. Execution // AttenuatedCommand is a sub-command of the NominalCommand.
// of this command is generally allowed in tests. // Execution of this command is generally allowed in tests.
AttenuatedCommand = NominalCommand.Join("attenuated") AttenuatedCommand = NominalCommand.Join("attenuated")
) )
@@ -35,21 +35,21 @@ const TokenDir = "data"
//go:embed data //go:embed data
var fs embed.FS var fs embed.FS
var _ delegation.Loader = (*delegationLoader)(nil) var _ delegation.Loader = (*DelegationLoader)(nil)
type delegationLoader struct { type DelegationLoader struct {
tokens map[cid.Cid]*delegation.Token bundles map[cid.Cid]*delegation.Bundle
} }
var ( var (
once sync.Once once sync.Once
ldr delegation.Loader ldr *DelegationLoader
) )
// GetDelegationLoader returns a singleton instance of a test // GetDelegationLoader returns a singleton instance of a test
// DelegationLoader containing all the tokens present in the data/ // DelegationLoader containing all the tokens present in the data/
// directory. // directory.
func GetDelegationLoader() delegation.Loader { func GetDelegationLoader() *DelegationLoader {
once.Do(func() { once.Do(func() {
var err error var err error
ldr, err = loadDelegations() ldr, err = loadDelegations()
@@ -61,22 +61,21 @@ func GetDelegationLoader() delegation.Loader {
} }
// GetDelegation implements invocation.DelegationLoader. // GetDelegation implements invocation.DelegationLoader.
func (l *delegationLoader) GetDelegation(id cid.Cid) (*delegation.Token, error) { func (l *DelegationLoader) GetDelegation(id cid.Cid) (*delegation.Token, error) {
tkn, ok := l.tokens[id] bundle, ok := l.bundles[id]
if !ok { if !ok {
return nil, delegation.ErrDelegationNotFound return nil, delegation.ErrDelegationNotFound
} }
return bundle.Decoded, nil
return tkn, nil
} }
func loadDelegations() (delegation.Loader, error) { func loadDelegations() (*DelegationLoader, error) {
dirEntries, err := fs.ReadDir(TokenDir) dirEntries, err := fs.ReadDir(TokenDir)
if err != nil { if err != nil {
return nil, err return nil, err
} }
tkns := make(map[cid.Cid]*delegation.Token, len(dirEntries)) bundles := make(map[cid.Cid]*delegation.Bundle, len(dirEntries))
for _, dirEntry := range dirEntries { for _, dirEntry := range dirEntries {
data, err := fs.ReadFile(filepath.Join(TokenDir, dirEntry.Name())) data, err := fs.ReadFile(filepath.Join(TokenDir, dirEntry.Name()))
@@ -89,11 +88,11 @@ func loadDelegations() (delegation.Loader, error) {
return nil, err return nil, err
} }
tkns[id] = tkn bundles[id] = &delegation.Bundle{Cid: id, Decoded: tkn, Sealed: data}
} }
return &delegationLoader{ return &DelegationLoader{
tokens: tkns, bundles: bundles,
}, nil }, nil
} }
@@ -103,10 +102,14 @@ func GetDelegation(id cid.Cid) (*delegation.Token, error) {
return GetDelegationLoader().GetDelegation(id) return GetDelegationLoader().GetDelegation(id)
} }
func mustGetDelegation(id cid.Cid) *delegation.Token { func CidToName(id cid.Cid) string {
tkn, err := GetDelegation(id) return cidToName[id]
if err != nil { }
panic(err)
} func mustGetBundle(id cid.Cid) *delegation.Bundle {
return tkn bundle, ok := GetDelegationLoader().bundles[id]
if !ok {
panic(delegation.ErrDelegationNotFound)
}
return bundle
} }

View File

@@ -2,123 +2,251 @@
package delegationtest package delegationtest
import "github.com/ipfs/go-cid" import (
"github.com/ipfs/go-cid"
var ( "github.com/ucan-wg/go-ucan/token/delegation"
TokenAliceBobCID = cid.MustParse("bafyreicidrwvmac5lvjypucgityrtjsknojraio7ujjli4r5eyby66wjzm")
TokenAliceBob = mustGetDelegation(TokenAliceBobCID)
) )
var ( var (
TokenBobCarolCID = cid.MustParse("bafyreihxv2uhq43oxllzs2xfvxst7wtvvvl7pohb2chcz6hjvfv2ntea5u") TokenAliceBobCID = cid.MustParse("bafyreicidrwvmac5lvjypucgityrtjsknojraio7ujjli4r5eyby66wjzm")
TokenBobCarol = mustGetDelegation(TokenBobCarolCID) TokenAliceBobSealed = mustGetBundle(TokenAliceBobCID).Sealed
TokenAliceBobBundle = mustGetBundle(TokenAliceBobCID)
TokenAliceBob = mustGetBundle(TokenAliceBobCID).Decoded
) )
var ( var (
TokenCarolDanCID = cid.MustParse("bafyreihclsgiroazq3heqdswvj2cafwqbpboicq7immo65scl7ahktpsdq") TokenBobCarolCID = cid.MustParse("bafyreihxv2uhq43oxllzs2xfvxst7wtvvvl7pohb2chcz6hjvfv2ntea5u")
TokenCarolDan = mustGetDelegation(TokenCarolDanCID) TokenBobCarolSealed = mustGetBundle(TokenBobCarolCID).Sealed
TokenBobCarolBundle = mustGetBundle(TokenBobCarolCID)
TokenBobCarol = mustGetBundle(TokenBobCarolCID).Decoded
) )
var ( var (
TokenDanErinCID = cid.MustParse("bafyreicja6ihewy64p3ake56xukotafjlkh4uqep2qhj52en46zzfwby3e") TokenCarolDanCID = cid.MustParse("bafyreihclsgiroazq3heqdswvj2cafwqbpboicq7immo65scl7ahktpsdq")
TokenDanErin = mustGetDelegation(TokenDanErinCID) TokenCarolDanSealed = mustGetBundle(TokenCarolDanCID).Sealed
TokenCarolDanBundle = mustGetBundle(TokenCarolDanCID)
TokenCarolDan = mustGetBundle(TokenCarolDanCID).Decoded
) )
var ( var (
TokenErinFrankCID = cid.MustParse("bafyreicjlx3lobxm6hl5s4htd4ydwkkqeiou6rft4rnvulfdyoew565vka") TokenDanErinCID = cid.MustParse("bafyreicja6ihewy64p3ake56xukotafjlkh4uqep2qhj52en46zzfwby3e")
TokenErinFrank = mustGetDelegation(TokenErinFrankCID) TokenDanErinSealed = mustGetBundle(TokenDanErinCID).Sealed
TokenDanErinBundle = mustGetBundle(TokenDanErinCID)
TokenDanErin = mustGetBundle(TokenDanErinCID).Decoded
) )
var ( var (
TokenCarolDan_InvalidExpandedCommandCID = cid.MustParse("bafyreid3m3pk53gqgp5rlzqhvpedbwsqbidqlp4yz64vknwbzj7bxrmsr4") TokenErinFrankCID = cid.MustParse("bafyreicjlx3lobxm6hl5s4htd4ydwkkqeiou6rft4rnvulfdyoew565vka")
TokenCarolDan_InvalidExpandedCommand = mustGetDelegation(TokenCarolDan_InvalidExpandedCommandCID) TokenErinFrankSealed = mustGetBundle(TokenErinFrankCID).Sealed
TokenErinFrankBundle = mustGetBundle(TokenErinFrankCID)
TokenErinFrank = mustGetBundle(TokenErinFrankCID).Decoded
) )
var ( var (
TokenDanErin_InvalidExpandedCommandCID = cid.MustParse("bafyreifn4sy5onwajx3kqvot5mib6m6xarzrqjozqbzgmzpmc5ox3g2uzm") TokenCarolDan_InvalidExpandedCommandCID = cid.MustParse("bafyreid3m3pk53gqgp5rlzqhvpedbwsqbidqlp4yz64vknwbzj7bxrmsr4")
TokenDanErin_InvalidExpandedCommand = mustGetDelegation(TokenDanErin_InvalidExpandedCommandCID) TokenCarolDan_InvalidExpandedCommandSealed = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID).Sealed
TokenCarolDan_InvalidExpandedCommandBundle = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID)
TokenCarolDan_InvalidExpandedCommand = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID).Decoded
) )
var ( var (
TokenErinFrank_InvalidExpandedCommandCID = cid.MustParse("bafyreidmpgd36jznmq42bs34o4qi3fcbrsh4idkg6ejahudejzwb76fwxe") TokenDanErin_InvalidExpandedCommandCID = cid.MustParse("bafyreifn4sy5onwajx3kqvot5mib6m6xarzrqjozqbzgmzpmc5ox3g2uzm")
TokenErinFrank_InvalidExpandedCommand = mustGetDelegation(TokenErinFrank_InvalidExpandedCommandCID) TokenDanErin_InvalidExpandedCommandSealed = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID).Sealed
TokenDanErin_InvalidExpandedCommandBundle = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID)
TokenDanErin_InvalidExpandedCommand = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID).Decoded
) )
var ( var (
TokenCarolDan_ValidAttenuatedCommandCID = cid.MustParse("bafyreiekhtm237vyapk3c6voeb5lnz54crebqdqi3x4wn4u4cbrrhzsqfe") TokenErinFrank_InvalidExpandedCommandCID = cid.MustParse("bafyreidmpgd36jznmq42bs34o4qi3fcbrsh4idkg6ejahudejzwb76fwxe")
TokenCarolDan_ValidAttenuatedCommand = mustGetDelegation(TokenCarolDan_ValidAttenuatedCommandCID) TokenErinFrank_InvalidExpandedCommandSealed = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID).Sealed
TokenErinFrank_InvalidExpandedCommandBundle = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID)
TokenErinFrank_InvalidExpandedCommand = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID).Decoded
) )
var ( var (
TokenDanErin_ValidAttenuatedCommandCID = cid.MustParse("bafyreicrvzqferyy7rgo75l5rn6r2nl7zyeexxjmu3dm4ff7rn2coblj4y") TokenCarolDan_ValidAttenuatedCommandCID = cid.MustParse("bafyreiekhtm237vyapk3c6voeb5lnz54crebqdqi3x4wn4u4cbrrhzsqfe")
TokenDanErin_ValidAttenuatedCommand = mustGetDelegation(TokenDanErin_ValidAttenuatedCommandCID) TokenCarolDan_ValidAttenuatedCommandSealed = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID).Sealed
TokenCarolDan_ValidAttenuatedCommandBundle = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID)
TokenCarolDan_ValidAttenuatedCommand = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID).Decoded
) )
var ( var (
TokenErinFrank_ValidAttenuatedCommandCID = cid.MustParse("bafyreie6fhspk53kplcc2phla3e7z7fzldlbmmpuwk6nbow5q6s2zjmw2q") TokenDanErin_ValidAttenuatedCommandCID = cid.MustParse("bafyreicrvzqferyy7rgo75l5rn6r2nl7zyeexxjmu3dm4ff7rn2coblj4y")
TokenErinFrank_ValidAttenuatedCommand = mustGetDelegation(TokenErinFrank_ValidAttenuatedCommandCID) TokenDanErin_ValidAttenuatedCommandSealed = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID).Sealed
TokenDanErin_ValidAttenuatedCommandBundle = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID)
TokenDanErin_ValidAttenuatedCommand = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID).Decoded
) )
var ( var (
TokenCarolDan_InvalidSubjectCID = cid.MustParse("bafyreifgksz6756if42tnc6rqsnbaa2u3fdrveo7ek44lnj2d64d5sw26u") TokenErinFrank_ValidAttenuatedCommandCID = cid.MustParse("bafyreie6fhspk53kplcc2phla3e7z7fzldlbmmpuwk6nbow5q6s2zjmw2q")
TokenCarolDan_InvalidSubject = mustGetDelegation(TokenCarolDan_InvalidSubjectCID) TokenErinFrank_ValidAttenuatedCommandSealed = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID).Sealed
TokenErinFrank_ValidAttenuatedCommandBundle = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID)
TokenErinFrank_ValidAttenuatedCommand = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID).Decoded
) )
var ( var (
TokenDanErin_InvalidSubjectCID = cid.MustParse("bafyreibdwew5nypsxrm4fq73wu6hw3lgwwiolj3bi33xdrbgcf3ogm6fty") TokenCarolDan_InvalidSubjectCID = cid.MustParse("bafyreifgksz6756if42tnc6rqsnbaa2u3fdrveo7ek44lnj2d64d5sw26u")
TokenDanErin_InvalidSubject = mustGetDelegation(TokenDanErin_InvalidSubjectCID) TokenCarolDan_InvalidSubjectSealed = mustGetBundle(TokenCarolDan_InvalidSubjectCID).Sealed
TokenCarolDan_InvalidSubjectBundle = mustGetBundle(TokenCarolDan_InvalidSubjectCID)
TokenCarolDan_InvalidSubject = mustGetBundle(TokenCarolDan_InvalidSubjectCID).Decoded
) )
var ( var (
TokenErinFrank_InvalidSubjectCID = cid.MustParse("bafyreicr364mj3n7x4iyhcksxypelktcqkkw3ptg7ggxtqegw3p3mr6zc4") TokenDanErin_InvalidSubjectCID = cid.MustParse("bafyreibdwew5nypsxrm4fq73wu6hw3lgwwiolj3bi33xdrbgcf3ogm6fty")
TokenErinFrank_InvalidSubject = mustGetDelegation(TokenErinFrank_InvalidSubjectCID) TokenDanErin_InvalidSubjectSealed = mustGetBundle(TokenDanErin_InvalidSubjectCID).Sealed
TokenDanErin_InvalidSubjectBundle = mustGetBundle(TokenDanErin_InvalidSubjectCID)
TokenDanErin_InvalidSubject = mustGetBundle(TokenDanErin_InvalidSubjectCID).Decoded
) )
var ( var (
TokenCarolDan_InvalidExpiredCID = cid.MustParse("bafyreici5ggrh6yyoqfqwfssks4737icit2exxrhhcsljpc6lniz64ejay") TokenErinFrank_InvalidSubjectCID = cid.MustParse("bafyreicr364mj3n7x4iyhcksxypelktcqkkw3ptg7ggxtqegw3p3mr6zc4")
TokenCarolDan_InvalidExpired = mustGetDelegation(TokenCarolDan_InvalidExpiredCID) TokenErinFrank_InvalidSubjectSealed = mustGetBundle(TokenErinFrank_InvalidSubjectCID).Sealed
TokenErinFrank_InvalidSubjectBundle = mustGetBundle(TokenErinFrank_InvalidSubjectCID)
TokenErinFrank_InvalidSubject = mustGetBundle(TokenErinFrank_InvalidSubjectCID).Decoded
) )
var ( var (
TokenDanErin_InvalidExpiredCID = cid.MustParse("bafyreidnkdvkwhuoiwldua4z7mupuoaixktmuihd4h3gqff4nk4lfuoxlq") TokenCarolDan_InvalidExpiredCID = cid.MustParse("bafyreic7cpi2j65je6rwiyxzq233lpbljvl6ggs5ew53nnye3tc3jdltqm")
TokenDanErin_InvalidExpired = mustGetDelegation(TokenDanErin_InvalidExpiredCID) TokenCarolDan_InvalidExpiredSealed = mustGetBundle(TokenCarolDan_InvalidExpiredCID).Sealed
TokenCarolDan_InvalidExpiredBundle = mustGetBundle(TokenCarolDan_InvalidExpiredCID)
TokenCarolDan_InvalidExpired = mustGetBundle(TokenCarolDan_InvalidExpiredCID).Decoded
) )
var ( var (
TokenErinFrank_InvalidExpiredCID = cid.MustParse("bafyreighom66dfg3scp26huljbiovkuuv2bh4izdqahccutrilqz46nz3e") TokenDanErin_InvalidExpiredCID = cid.MustParse("bafyreiguafxrlpncpjxxfuled2izocjp5s3kcclkdl4edpd22tr2gfcad4")
TokenErinFrank_InvalidExpired = mustGetDelegation(TokenErinFrank_InvalidExpiredCID) TokenDanErin_InvalidExpiredSealed = mustGetBundle(TokenDanErin_InvalidExpiredCID).Sealed
TokenDanErin_InvalidExpiredBundle = mustGetBundle(TokenDanErin_InvalidExpiredCID)
TokenDanErin_InvalidExpired = mustGetBundle(TokenDanErin_InvalidExpiredCID).Decoded
) )
var ( var (
TokenCarolDan_InvalidInactiveCID = cid.MustParse("bafyreicea5y2nvlitvxijkupeavtg23i7ktjk3uejnaquguurzptiabk4u") TokenErinFrank_InvalidExpiredCID = cid.MustParse("bafyreid4blvceraqiz32vca4gwk2hcf7dqtu6ydpmq3xlbj5biiq46mo44")
TokenCarolDan_InvalidInactive = mustGetDelegation(TokenCarolDan_InvalidInactiveCID) TokenErinFrank_InvalidExpiredSealed = mustGetBundle(TokenErinFrank_InvalidExpiredCID).Sealed
TokenErinFrank_InvalidExpiredBundle = mustGetBundle(TokenErinFrank_InvalidExpiredCID)
TokenErinFrank_InvalidExpired = mustGetBundle(TokenErinFrank_InvalidExpiredCID).Decoded
) )
var ( var (
TokenDanErin_InvalidInactiveCID = cid.MustParse("bafyreifsgqzkmxj2vexuts3z766mwcjreiisjg2jykyzf7tbj5sclutpvq") TokenCarolDan_InvalidInactiveCID = cid.MustParse("bafyreicea5y2nvlitvxijkupeavtg23i7ktjk3uejnaquguurzptiabk4u")
TokenDanErin_InvalidInactive = mustGetDelegation(TokenDanErin_InvalidInactiveCID) TokenCarolDan_InvalidInactiveSealed = mustGetBundle(TokenCarolDan_InvalidInactiveCID).Sealed
TokenCarolDan_InvalidInactiveBundle = mustGetBundle(TokenCarolDan_InvalidInactiveCID)
TokenCarolDan_InvalidInactive = mustGetBundle(TokenCarolDan_InvalidInactiveCID).Decoded
) )
var ( var (
TokenErinFrank_InvalidInactiveCID = cid.MustParse("bafyreifbfegon24c6dndiqyktahzs65vhyasrygbw7nhsvojn6distsdre") TokenDanErin_InvalidInactiveCID = cid.MustParse("bafyreifsgqzkmxj2vexuts3z766mwcjreiisjg2jykyzf7tbj5sclutpvq")
TokenErinFrank_InvalidInactive = mustGetDelegation(TokenErinFrank_InvalidInactiveCID) TokenDanErin_InvalidInactiveSealed = mustGetBundle(TokenDanErin_InvalidInactiveCID).Sealed
TokenDanErin_InvalidInactiveBundle = mustGetBundle(TokenDanErin_InvalidInactiveCID)
TokenDanErin_InvalidInactive = mustGetBundle(TokenDanErin_InvalidInactiveCID).Decoded
) )
var ( var (
TokenCarolDan_ValidExamplePolicyCID = cid.MustParse("bafyreibtfrp2njnkjrcuhxd4ebaecmpcql5knek2h2j2fjzu2sij2tv6ei") TokenErinFrank_InvalidInactiveCID = cid.MustParse("bafyreifbfegon24c6dndiqyktahzs65vhyasrygbw7nhsvojn6distsdre")
TokenCarolDan_ValidExamplePolicy = mustGetDelegation(TokenCarolDan_ValidExamplePolicyCID) TokenErinFrank_InvalidInactiveSealed = mustGetBundle(TokenErinFrank_InvalidInactiveCID).Sealed
TokenErinFrank_InvalidInactiveBundle = mustGetBundle(TokenErinFrank_InvalidInactiveCID)
TokenErinFrank_InvalidInactive = mustGetBundle(TokenErinFrank_InvalidInactiveCID).Decoded
) )
var ( var (
TokenDanErin_ValidExamplePolicyCID = cid.MustParse("bafyreidxfwbkzujpu7ivulkc7b6ff4cpbzrkeklmxqvyhhmkmym5b45e2e") TokenCarolDan_ValidExamplePolicyCID = cid.MustParse("bafyreibtfrp2njnkjrcuhxd4ebaecmpcql5knek2h2j2fjzu2sij2tv6ei")
TokenDanErin_ValidExamplePolicy = mustGetDelegation(TokenDanErin_ValidExamplePolicyCID) TokenCarolDan_ValidExamplePolicySealed = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID).Sealed
TokenCarolDan_ValidExamplePolicyBundle = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID)
TokenCarolDan_ValidExamplePolicy = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID).Decoded
) )
var ( var (
TokenErinFrank_ValidExamplePolicyCID = cid.MustParse("bafyreiatkvtvgakqcrdk6vgrv7tbq5rbeiqct52ep4plcftp2agffjyvp4") TokenDanErin_ValidExamplePolicyCID = cid.MustParse("bafyreidxfwbkzujpu7ivulkc7b6ff4cpbzrkeklmxqvyhhmkmym5b45e2e")
TokenErinFrank_ValidExamplePolicy = mustGetDelegation(TokenErinFrank_ValidExamplePolicyCID) TokenDanErin_ValidExamplePolicySealed = mustGetBundle(TokenDanErin_ValidExamplePolicyCID).Sealed
TokenDanErin_ValidExamplePolicyBundle = mustGetBundle(TokenDanErin_ValidExamplePolicyCID)
TokenDanErin_ValidExamplePolicy = mustGetBundle(TokenDanErin_ValidExamplePolicyCID).Decoded
) )
var (
TokenErinFrank_ValidExamplePolicyCID = cid.MustParse("bafyreiatkvtvgakqcrdk6vgrv7tbq5rbeiqct52ep4plcftp2agffjyvp4")
TokenErinFrank_ValidExamplePolicySealed = mustGetBundle(TokenErinFrank_ValidExamplePolicyCID).Sealed
TokenErinFrank_ValidExamplePolicyBundle = mustGetBundle(TokenErinFrank_ValidExamplePolicyCID)
TokenErinFrank_ValidExamplePolicy = mustGetBundle(TokenErinFrank_ValidExamplePolicyCID).Decoded
)
var AllTokens = []*delegation.Token{
TokenAliceBob,
TokenBobCarol,
TokenCarolDan,
TokenDanErin,
TokenErinFrank,
TokenCarolDan_InvalidExpandedCommand,
TokenDanErin_InvalidExpandedCommand,
TokenErinFrank_InvalidExpandedCommand,
TokenCarolDan_ValidAttenuatedCommand,
TokenDanErin_ValidAttenuatedCommand,
TokenErinFrank_ValidAttenuatedCommand,
TokenCarolDan_InvalidSubject,
TokenDanErin_InvalidSubject,
TokenErinFrank_InvalidSubject,
TokenCarolDan_InvalidExpired,
TokenDanErin_InvalidExpired,
TokenErinFrank_InvalidExpired,
TokenCarolDan_InvalidInactive,
TokenDanErin_InvalidInactive,
TokenErinFrank_InvalidInactive,
TokenCarolDan_ValidExamplePolicy,
TokenDanErin_ValidExamplePolicy,
TokenErinFrank_ValidExamplePolicy,
}
var AllBundles = []*delegation.Bundle{
TokenAliceBobBundle,
TokenBobCarolBundle,
TokenCarolDanBundle,
TokenDanErinBundle,
TokenErinFrankBundle,
TokenCarolDan_InvalidExpandedCommandBundle,
TokenDanErin_InvalidExpandedCommandBundle,
TokenErinFrank_InvalidExpandedCommandBundle,
TokenCarolDan_ValidAttenuatedCommandBundle,
TokenDanErin_ValidAttenuatedCommandBundle,
TokenErinFrank_ValidAttenuatedCommandBundle,
TokenCarolDan_InvalidSubjectBundle,
TokenDanErin_InvalidSubjectBundle,
TokenErinFrank_InvalidSubjectBundle,
TokenCarolDan_InvalidExpiredBundle,
TokenDanErin_InvalidExpiredBundle,
TokenErinFrank_InvalidExpiredBundle,
TokenCarolDan_InvalidInactiveBundle,
TokenDanErin_InvalidInactiveBundle,
TokenErinFrank_InvalidInactiveBundle,
TokenCarolDan_ValidExamplePolicyBundle,
TokenDanErin_ValidExamplePolicyBundle,
TokenErinFrank_ValidExamplePolicyBundle,
}
var cidToName = map[cid.Cid]string{
TokenAliceBobCID: "TokenAliceBob",
TokenBobCarolCID: "TokenBobCarol",
TokenCarolDanCID: "TokenCarolDan",
TokenDanErinCID: "TokenDanErin",
TokenErinFrankCID: "TokenErinFrank",
TokenCarolDan_InvalidExpandedCommandCID: "TokenCarolDan_InvalidExpandedCommand",
TokenDanErin_InvalidExpandedCommandCID: "TokenDanErin_InvalidExpandedCommand",
TokenErinFrank_InvalidExpandedCommandCID: "TokenErinFrank_InvalidExpandedCommand",
TokenCarolDan_ValidAttenuatedCommandCID: "TokenCarolDan_ValidAttenuatedCommand",
TokenDanErin_ValidAttenuatedCommandCID: "TokenDanErin_ValidAttenuatedCommand",
TokenErinFrank_ValidAttenuatedCommandCID: "TokenErinFrank_ValidAttenuatedCommand",
TokenCarolDan_InvalidSubjectCID: "TokenCarolDan_InvalidSubject",
TokenDanErin_InvalidSubjectCID: "TokenDanErin_InvalidSubject",
TokenErinFrank_InvalidSubjectCID: "TokenErinFrank_InvalidSubject",
TokenCarolDan_InvalidExpiredCID: "TokenCarolDan_InvalidExpired",
TokenDanErin_InvalidExpiredCID: "TokenDanErin_InvalidExpired",
TokenErinFrank_InvalidExpiredCID: "TokenErinFrank_InvalidExpired",
TokenCarolDan_InvalidInactiveCID: "TokenCarolDan_InvalidInactive",
TokenDanErin_InvalidInactiveCID: "TokenDanErin_InvalidInactive",
TokenErinFrank_InvalidInactiveCID: "TokenErinFrank_InvalidInactive",
TokenCarolDan_ValidExamplePolicyCID: "TokenCarolDan_ValidExamplePolicy",
TokenDanErin_ValidExamplePolicyCID: "TokenDanErin_ValidExamplePolicy",
TokenErinFrank_ValidExamplePolicyCID: "TokenErinFrank_ValidExamplePolicy",
}
var ProofAliceBob = []cid.Cid{ var ProofAliceBob = []cid.Cid{
TokenAliceBobCID, TokenAliceBobCID,
} }

View File

@@ -41,18 +41,18 @@ const (
var schemaBytes []byte var schemaBytes []byte
var ( var (
once sync.Once once sync.Once
ts *schema.TypeSystem ts *schema.TypeSystem
err error errSchema error
) )
func mustLoadSchema() *schema.TypeSystem { func mustLoadSchema() *schema.TypeSystem {
once.Do(func() { once.Do(func() {
ts, err = ipld.LoadSchemaBytes(schemaBytes) ts, errSchema = ipld.LoadSchemaBytes(schemaBytes)
}) })
if err != nil { if errSchema != nil {
panic(fmt.Errorf("failed to load IPLD schema: %s", err)) panic(fmt.Errorf("failed to load IPLD schema: %s", errSchema))
} }
return ts return ts