From d0d4ec3abe89e6047b2372a4f689dfce1474b897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Wed, 4 Dec 2024 19:53:05 +0100 Subject: [PATCH 1/3] delegation,invocation: meta can be nil in the model, but not in the view --- token/delegation/delegation.go | 3 +++ token/invocation/invocation.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/token/delegation/delegation.go b/token/delegation/delegation.go index 110b8e1..1d6208a 100644 --- a/token/delegation/delegation.go +++ b/token/delegation/delegation.go @@ -214,6 +214,9 @@ func tokenFromModel(m tokenPayloadModel) (*Token, error) { tkn.nonce = m.Nonce tkn.meta = m.Meta + if tkn.meta == nil { + tkn.meta = meta.NewMeta() + } tkn.notBefore, err = parse.OptionalTimestamp(m.Nbf) if err != nil { diff --git a/token/invocation/invocation.go b/token/invocation/invocation.go index 4ab7b8b..577f4d8 100644 --- a/token/invocation/invocation.go +++ b/token/invocation/invocation.go @@ -277,7 +277,11 @@ func tokenFromModel(m tokenPayloadModel) (*Token, error) { } tkn.proof = m.Prf + tkn.meta = m.Meta + if tkn.meta == nil { + tkn.meta = meta.NewMeta() + } tkn.expiration, err = parse.OptionalTimestamp(m.Exp) if err != nil { From 72e0f353e71aaff9390c82f156561f98a7b5ed14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Wed, 4 Dec 2024 19:54:46 +0100 Subject: [PATCH 2/3] delegation: add a Bundle to carry around decoded, sealed and Cid --- token/delegation/{loader.go => utilities.go} | 7 +++++++ 1 file changed, 7 insertions(+) rename token/delegation/{loader.go => utilities.go} (73%) diff --git a/token/delegation/loader.go b/token/delegation/utilities.go similarity index 73% rename from token/delegation/loader.go rename to token/delegation/utilities.go index 13dd81d..957ca9d 100644 --- a/token/delegation/loader.go +++ b/token/delegation/utilities.go @@ -15,3 +15,10 @@ type Loader interface { // If not found, ErrDelegationNotFound is returned. GetDelegation(cid cid.Cid) (*Token, error) } + +// Bundle carries together a decoded delegation with its Cid and raw signed data. +type Bundle struct { + Cid cid.Cid + Decoded *Token + Sealed []byte +} From 0f59088d0b495f0de3877f677c7b1a3418b22832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Wed, 4 Dec 2024 19:55:29 +0100 Subject: [PATCH 3/3] test: improvement on the generator, small fixes --- did/didtest/crypto.go | 12 + pkg/args/args_test.go | 12 +- .../data/TokenCarolDan_InvalidExpired.dagcbor | Bin 337 -> 337 bytes .../data/TokenDanErin_InvalidExpired.dagcbor | Bin 337 -> 337 bytes .../TokenErinFrank_InvalidExpired.dagcbor | Bin 337 -> 337 bytes .../delegationtest/generator/generator.go | 55 +++-- token/delegation/delegationtest/token.go | 51 ++-- token/delegation/delegationtest/token_gen.go | 224 ++++++++++++++---- token/internal/envelope/example_test.go | 12 +- 9 files changed, 268 insertions(+), 98 deletions(-) diff --git a/did/didtest/crypto.go b/did/didtest/crypto.go index 13b43c2..513787a 100644 --- a/did/didtest/crypto.go +++ b/did/didtest/crypto.go @@ -129,3 +129,15 @@ func Personas() []Persona { 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] +} diff --git a/pkg/args/args_test.go b/pkg/args/args_test.go index 938151f..e0b247c 100644 --- a/pkg/args/args_test.go +++ b/pkg/args/args_test.go @@ -257,17 +257,17 @@ const ( ) var ( - once sync.Once - ts *schema.TypeSystem - err error + once sync.Once + ts *schema.TypeSystem + errSchema error ) func argsType() schema.Type { once.Do(func() { - ts, err = ipld.LoadSchemaBytes([]byte(argsSchema)) + ts, errSchema = ipld.LoadSchemaBytes([]byte(argsSchema)) }) - if err != nil { - panic(err) + if errSchema != nil { + panic(errSchema) } return ts.TypeByName(argsName) diff --git a/token/delegation/delegationtest/data/TokenCarolDan_InvalidExpired.dagcbor b/token/delegation/delegationtest/data/TokenCarolDan_InvalidExpired.dagcbor index 8a74f363b0b604d9fddb54787fc859f63e53f1d2..9dc8a96a155f97b5ae293a459a5b1e3697f35adb 100644 GIT binary patch delta 81 zcmV-X0IvVh0?`6Of>=QAZ^X{>BYwiJRKo;E1H4h9>?at%2O_>6H(**fLwOz|iuSSl nK#N9hW4xXs)fCB=ZgVFn!a_K-9PboFf`O4jcmq(4q>;Up)S4tE delta 81 zcmV-X0IvVh0?`6Of>=P_BHYM(piW%{DT{%#kir#=iYYcmqgBK#{$aSS%>Q diff --git a/token/delegation/delegationtest/data/TokenDanErin_InvalidExpired.dagcbor b/token/delegation/delegationtest/data/TokenDanErin_InvalidExpired.dagcbor index c60d268c1113c17ecff197215a43ec11d774ca1c..261908e9550d18f1b9deb48a1ba3060051f948dc 100644 GIT binary patch delta 82 zcmV-Y0ImPg0?`6Pf>=N@mrZ3DT9(&F=TM}@Sa@np3Q>4qRf^-qAR@X*uY>}TLw5sEjiiyil%)=N>pwtHrxj=N%7!WD>*L=L?4veMPU!4fXJtR^F{_K{u0jEA2?kQ0(-)@5z nz~KWC>|@%Cv$tytXZiofOjpjI8plVz1)q^Zcmq(4q>;Up>wP9} delta 81 zcmV-X0IvVh0?`6Of>=N??_c_Ft&8s!@7^N!Bn2dx1$}!hFBk^hejsgE5Zjwg@2%%G nJU%LUJoi4Hic#?GWF3OV2+xd%YRjW{uQ!oGcmqgBK#{$a-A^R_ diff --git a/token/delegation/delegationtest/generator/generator.go b/token/delegation/delegationtest/generator/generator.go index 65982e5..d695a11 100644 --- a/token/delegation/delegationtest/generator/generator.go +++ b/token/delegation/delegationtest/generator/generator.go @@ -213,33 +213,60 @@ func (g *generator) writeGoFile() error { err = f.Close() }() - fmt.Fprintln(f, "// Code generated by delegationtest - DO NOT EDIT.") - fmt.Fprintln(f) - fmt.Fprintln(f, "package delegationtest") - fmt.Fprintln(f) - fmt.Fprintln(f, "import \"github.com/ipfs/go-cid\"") + _, _ = fmt.Fprintln(f, "// Code generated by delegationtest - DO NOT EDIT.") + _, _ = fmt.Fprintln(f) + _, _ = fmt.Fprintln(f, "package delegationtest") + _, _ = fmt.Fprintln(f) + _, _ = 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)) for _, d := range g.dlgs { refs[d.id] = d.name + "CID" - fmt.Fprintln(f) - fmt.Fprintln(f, "var (") - fmt.Fprintf(f, "\t%s = cid.MustParse(\"%s\")\n", d.name+"CID", d.id.String()) - fmt.Fprintf(f, "\t%s = mustGetDelegation(%s)\n", d.name, d.name+"CID") - fmt.Fprintln(f, ")") + _, _ = fmt.Fprintln(f) + _, _ = fmt.Fprintln(f, "var (") + _, _ = fmt.Fprintf(f, "\t%sCID = cid.MustParse(\"%s\")\n", d.name, d.id.String()) + _, _ = fmt.Fprintf(f, "\t%sSealed = mustGetBundle(%s).Sealed\n", d.name, d.name+"CID") + _, _ = 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 { - fmt.Fprintln(f) - fmt.Fprintf(f, "var %s = []cid.Cid{\n", c.name) + _, _ = fmt.Fprintln(f) + _, _ = fmt.Fprintf(f, "var %s = []cid.Cid{\n", c.name) 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 diff --git a/token/delegation/delegationtest/token.go b/token/delegation/delegationtest/token.go index e425733..89bb3ef 100644 --- a/token/delegation/delegationtest/token.go +++ b/token/delegation/delegationtest/token.go @@ -18,12 +18,12 @@ var ( // Execution of this command is generally prohibited in tests. ExpandedCommand = command.MustParse("/expanded") - // NominalCommand is the command used for most test tokens and proof- - // chains. Execution of this command is generally allowed in tests. + // NominalCommand is the command used for most test tokens and proof-chains. + // Execution of this command is generally allowed in tests. NominalCommand = ExpandedCommand.Join("nominal") - // AttenuatedCommand is a sub-command of the NominalCommand. Execution - // of this command is generally allowed in tests. + // AttenuatedCommand is a sub-command of the NominalCommand. + // Execution of this command is generally allowed in tests. AttenuatedCommand = NominalCommand.Join("attenuated") ) @@ -35,21 +35,21 @@ const TokenDir = "data" //go:embed data var fs embed.FS -var _ delegation.Loader = (*delegationLoader)(nil) +var _ delegation.Loader = (*DelegationLoader)(nil) -type delegationLoader struct { - tokens map[cid.Cid]*delegation.Token +type DelegationLoader struct { + bundles map[cid.Cid]*delegation.Bundle } var ( once sync.Once - ldr delegation.Loader + ldr *DelegationLoader ) // GetDelegationLoader returns a singleton instance of a test // DelegationLoader containing all the tokens present in the data/ // directory. -func GetDelegationLoader() delegation.Loader { +func GetDelegationLoader() *DelegationLoader { once.Do(func() { var err error ldr, err = loadDelegations() @@ -61,22 +61,21 @@ func GetDelegationLoader() delegation.Loader { } // GetDelegation implements invocation.DelegationLoader. -func (l *delegationLoader) GetDelegation(id cid.Cid) (*delegation.Token, error) { - tkn, ok := l.tokens[id] +func (l *DelegationLoader) GetDelegation(id cid.Cid) (*delegation.Token, error) { + bundle, ok := l.bundles[id] if !ok { return nil, delegation.ErrDelegationNotFound } - - return tkn, nil + return bundle.Decoded, nil } -func loadDelegations() (delegation.Loader, error) { +func loadDelegations() (*DelegationLoader, error) { dirEntries, err := fs.ReadDir(TokenDir) if err != nil { 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 { data, err := fs.ReadFile(filepath.Join(TokenDir, dirEntry.Name())) @@ -89,11 +88,11 @@ func loadDelegations() (delegation.Loader, error) { return nil, err } - tkns[id] = tkn + bundles[id] = &delegation.Bundle{Cid: id, Decoded: tkn, Sealed: data} } - return &delegationLoader{ - tokens: tkns, + return &DelegationLoader{ + bundles: bundles, }, nil } @@ -103,10 +102,14 @@ func GetDelegation(id cid.Cid) (*delegation.Token, error) { return GetDelegationLoader().GetDelegation(id) } -func mustGetDelegation(id cid.Cid) *delegation.Token { - tkn, err := GetDelegation(id) - if err != nil { - panic(err) - } - return tkn +func CidToName(id cid.Cid) string { + return cidToName[id] +} + +func mustGetBundle(id cid.Cid) *delegation.Bundle { + bundle, ok := GetDelegationLoader().bundles[id] + if !ok { + panic(delegation.ErrDelegationNotFound) + } + return bundle } diff --git a/token/delegation/delegationtest/token_gen.go b/token/delegation/delegationtest/token_gen.go index 0d367f7..008e992 100644 --- a/token/delegation/delegationtest/token_gen.go +++ b/token/delegation/delegationtest/token_gen.go @@ -2,123 +2,251 @@ package delegationtest -import "github.com/ipfs/go-cid" +import ( + "github.com/ipfs/go-cid" -var ( - TokenAliceBobCID = cid.MustParse("bafyreicidrwvmac5lvjypucgityrtjsknojraio7ujjli4r5eyby66wjzm") - TokenAliceBob = mustGetDelegation(TokenAliceBobCID) + "github.com/ucan-wg/go-ucan/token/delegation" ) var ( - TokenBobCarolCID = cid.MustParse("bafyreihxv2uhq43oxllzs2xfvxst7wtvvvl7pohb2chcz6hjvfv2ntea5u") - TokenBobCarol = mustGetDelegation(TokenBobCarolCID) + TokenAliceBobCID = cid.MustParse("bafyreicidrwvmac5lvjypucgityrtjsknojraio7ujjli4r5eyby66wjzm") + TokenAliceBobSealed = mustGetBundle(TokenAliceBobCID).Sealed + TokenAliceBobBundle = mustGetBundle(TokenAliceBobCID) + TokenAliceBob = mustGetBundle(TokenAliceBobCID).Decoded ) var ( - TokenCarolDanCID = cid.MustParse("bafyreihclsgiroazq3heqdswvj2cafwqbpboicq7immo65scl7ahktpsdq") - TokenCarolDan = mustGetDelegation(TokenCarolDanCID) + TokenBobCarolCID = cid.MustParse("bafyreihxv2uhq43oxllzs2xfvxst7wtvvvl7pohb2chcz6hjvfv2ntea5u") + TokenBobCarolSealed = mustGetBundle(TokenBobCarolCID).Sealed + TokenBobCarolBundle = mustGetBundle(TokenBobCarolCID) + TokenBobCarol = mustGetBundle(TokenBobCarolCID).Decoded ) var ( - TokenDanErinCID = cid.MustParse("bafyreicja6ihewy64p3ake56xukotafjlkh4uqep2qhj52en46zzfwby3e") - TokenDanErin = mustGetDelegation(TokenDanErinCID) + TokenCarolDanCID = cid.MustParse("bafyreihclsgiroazq3heqdswvj2cafwqbpboicq7immo65scl7ahktpsdq") + TokenCarolDanSealed = mustGetBundle(TokenCarolDanCID).Sealed + TokenCarolDanBundle = mustGetBundle(TokenCarolDanCID) + TokenCarolDan = mustGetBundle(TokenCarolDanCID).Decoded ) var ( - TokenErinFrankCID = cid.MustParse("bafyreicjlx3lobxm6hl5s4htd4ydwkkqeiou6rft4rnvulfdyoew565vka") - TokenErinFrank = mustGetDelegation(TokenErinFrankCID) + TokenDanErinCID = cid.MustParse("bafyreicja6ihewy64p3ake56xukotafjlkh4uqep2qhj52en46zzfwby3e") + TokenDanErinSealed = mustGetBundle(TokenDanErinCID).Sealed + TokenDanErinBundle = mustGetBundle(TokenDanErinCID) + TokenDanErin = mustGetBundle(TokenDanErinCID).Decoded ) var ( - TokenCarolDan_InvalidExpandedCommandCID = cid.MustParse("bafyreid3m3pk53gqgp5rlzqhvpedbwsqbidqlp4yz64vknwbzj7bxrmsr4") - TokenCarolDan_InvalidExpandedCommand = mustGetDelegation(TokenCarolDan_InvalidExpandedCommandCID) + TokenErinFrankCID = cid.MustParse("bafyreicjlx3lobxm6hl5s4htd4ydwkkqeiou6rft4rnvulfdyoew565vka") + TokenErinFrankSealed = mustGetBundle(TokenErinFrankCID).Sealed + TokenErinFrankBundle = mustGetBundle(TokenErinFrankCID) + TokenErinFrank = mustGetBundle(TokenErinFrankCID).Decoded ) var ( - TokenDanErin_InvalidExpandedCommandCID = cid.MustParse("bafyreifn4sy5onwajx3kqvot5mib6m6xarzrqjozqbzgmzpmc5ox3g2uzm") - TokenDanErin_InvalidExpandedCommand = mustGetDelegation(TokenDanErin_InvalidExpandedCommandCID) + TokenCarolDan_InvalidExpandedCommandCID = cid.MustParse("bafyreid3m3pk53gqgp5rlzqhvpedbwsqbidqlp4yz64vknwbzj7bxrmsr4") + TokenCarolDan_InvalidExpandedCommandSealed = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID).Sealed + TokenCarolDan_InvalidExpandedCommandBundle = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID) + TokenCarolDan_InvalidExpandedCommand = mustGetBundle(TokenCarolDan_InvalidExpandedCommandCID).Decoded ) var ( - TokenErinFrank_InvalidExpandedCommandCID = cid.MustParse("bafyreidmpgd36jznmq42bs34o4qi3fcbrsh4idkg6ejahudejzwb76fwxe") - TokenErinFrank_InvalidExpandedCommand = mustGetDelegation(TokenErinFrank_InvalidExpandedCommandCID) + TokenDanErin_InvalidExpandedCommandCID = cid.MustParse("bafyreifn4sy5onwajx3kqvot5mib6m6xarzrqjozqbzgmzpmc5ox3g2uzm") + TokenDanErin_InvalidExpandedCommandSealed = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID).Sealed + TokenDanErin_InvalidExpandedCommandBundle = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID) + TokenDanErin_InvalidExpandedCommand = mustGetBundle(TokenDanErin_InvalidExpandedCommandCID).Decoded ) var ( - TokenCarolDan_ValidAttenuatedCommandCID = cid.MustParse("bafyreiekhtm237vyapk3c6voeb5lnz54crebqdqi3x4wn4u4cbrrhzsqfe") - TokenCarolDan_ValidAttenuatedCommand = mustGetDelegation(TokenCarolDan_ValidAttenuatedCommandCID) + TokenErinFrank_InvalidExpandedCommandCID = cid.MustParse("bafyreidmpgd36jznmq42bs34o4qi3fcbrsh4idkg6ejahudejzwb76fwxe") + TokenErinFrank_InvalidExpandedCommandSealed = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID).Sealed + TokenErinFrank_InvalidExpandedCommandBundle = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID) + TokenErinFrank_InvalidExpandedCommand = mustGetBundle(TokenErinFrank_InvalidExpandedCommandCID).Decoded ) var ( - TokenDanErin_ValidAttenuatedCommandCID = cid.MustParse("bafyreicrvzqferyy7rgo75l5rn6r2nl7zyeexxjmu3dm4ff7rn2coblj4y") - TokenDanErin_ValidAttenuatedCommand = mustGetDelegation(TokenDanErin_ValidAttenuatedCommandCID) + TokenCarolDan_ValidAttenuatedCommandCID = cid.MustParse("bafyreiekhtm237vyapk3c6voeb5lnz54crebqdqi3x4wn4u4cbrrhzsqfe") + TokenCarolDan_ValidAttenuatedCommandSealed = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID).Sealed + TokenCarolDan_ValidAttenuatedCommandBundle = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID) + TokenCarolDan_ValidAttenuatedCommand = mustGetBundle(TokenCarolDan_ValidAttenuatedCommandCID).Decoded ) var ( - TokenErinFrank_ValidAttenuatedCommandCID = cid.MustParse("bafyreie6fhspk53kplcc2phla3e7z7fzldlbmmpuwk6nbow5q6s2zjmw2q") - TokenErinFrank_ValidAttenuatedCommand = mustGetDelegation(TokenErinFrank_ValidAttenuatedCommandCID) + TokenDanErin_ValidAttenuatedCommandCID = cid.MustParse("bafyreicrvzqferyy7rgo75l5rn6r2nl7zyeexxjmu3dm4ff7rn2coblj4y") + TokenDanErin_ValidAttenuatedCommandSealed = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID).Sealed + TokenDanErin_ValidAttenuatedCommandBundle = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID) + TokenDanErin_ValidAttenuatedCommand = mustGetBundle(TokenDanErin_ValidAttenuatedCommandCID).Decoded ) var ( - TokenCarolDan_InvalidSubjectCID = cid.MustParse("bafyreifgksz6756if42tnc6rqsnbaa2u3fdrveo7ek44lnj2d64d5sw26u") - TokenCarolDan_InvalidSubject = mustGetDelegation(TokenCarolDan_InvalidSubjectCID) + TokenErinFrank_ValidAttenuatedCommandCID = cid.MustParse("bafyreie6fhspk53kplcc2phla3e7z7fzldlbmmpuwk6nbow5q6s2zjmw2q") + TokenErinFrank_ValidAttenuatedCommandSealed = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID).Sealed + TokenErinFrank_ValidAttenuatedCommandBundle = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID) + TokenErinFrank_ValidAttenuatedCommand = mustGetBundle(TokenErinFrank_ValidAttenuatedCommandCID).Decoded ) var ( - TokenDanErin_InvalidSubjectCID = cid.MustParse("bafyreibdwew5nypsxrm4fq73wu6hw3lgwwiolj3bi33xdrbgcf3ogm6fty") - TokenDanErin_InvalidSubject = mustGetDelegation(TokenDanErin_InvalidSubjectCID) + TokenCarolDan_InvalidSubjectCID = cid.MustParse("bafyreifgksz6756if42tnc6rqsnbaa2u3fdrveo7ek44lnj2d64d5sw26u") + TokenCarolDan_InvalidSubjectSealed = mustGetBundle(TokenCarolDan_InvalidSubjectCID).Sealed + TokenCarolDan_InvalidSubjectBundle = mustGetBundle(TokenCarolDan_InvalidSubjectCID) + TokenCarolDan_InvalidSubject = mustGetBundle(TokenCarolDan_InvalidSubjectCID).Decoded ) var ( - TokenErinFrank_InvalidSubjectCID = cid.MustParse("bafyreicr364mj3n7x4iyhcksxypelktcqkkw3ptg7ggxtqegw3p3mr6zc4") - TokenErinFrank_InvalidSubject = mustGetDelegation(TokenErinFrank_InvalidSubjectCID) + TokenDanErin_InvalidSubjectCID = cid.MustParse("bafyreibdwew5nypsxrm4fq73wu6hw3lgwwiolj3bi33xdrbgcf3ogm6fty") + TokenDanErin_InvalidSubjectSealed = mustGetBundle(TokenDanErin_InvalidSubjectCID).Sealed + TokenDanErin_InvalidSubjectBundle = mustGetBundle(TokenDanErin_InvalidSubjectCID) + TokenDanErin_InvalidSubject = mustGetBundle(TokenDanErin_InvalidSubjectCID).Decoded ) var ( - TokenCarolDan_InvalidExpiredCID = cid.MustParse("bafyreici5ggrh6yyoqfqwfssks4737icit2exxrhhcsljpc6lniz64ejay") - TokenCarolDan_InvalidExpired = mustGetDelegation(TokenCarolDan_InvalidExpiredCID) + TokenErinFrank_InvalidSubjectCID = cid.MustParse("bafyreicr364mj3n7x4iyhcksxypelktcqkkw3ptg7ggxtqegw3p3mr6zc4") + TokenErinFrank_InvalidSubjectSealed = mustGetBundle(TokenErinFrank_InvalidSubjectCID).Sealed + TokenErinFrank_InvalidSubjectBundle = mustGetBundle(TokenErinFrank_InvalidSubjectCID) + TokenErinFrank_InvalidSubject = mustGetBundle(TokenErinFrank_InvalidSubjectCID).Decoded ) var ( - TokenDanErin_InvalidExpiredCID = cid.MustParse("bafyreidnkdvkwhuoiwldua4z7mupuoaixktmuihd4h3gqff4nk4lfuoxlq") - TokenDanErin_InvalidExpired = mustGetDelegation(TokenDanErin_InvalidExpiredCID) + TokenCarolDan_InvalidExpiredCID = cid.MustParse("bafyreic7cpi2j65je6rwiyxzq233lpbljvl6ggs5ew53nnye3tc3jdltqm") + TokenCarolDan_InvalidExpiredSealed = mustGetBundle(TokenCarolDan_InvalidExpiredCID).Sealed + TokenCarolDan_InvalidExpiredBundle = mustGetBundle(TokenCarolDan_InvalidExpiredCID) + TokenCarolDan_InvalidExpired = mustGetBundle(TokenCarolDan_InvalidExpiredCID).Decoded ) var ( - TokenErinFrank_InvalidExpiredCID = cid.MustParse("bafyreighom66dfg3scp26huljbiovkuuv2bh4izdqahccutrilqz46nz3e") - TokenErinFrank_InvalidExpired = mustGetDelegation(TokenErinFrank_InvalidExpiredCID) + TokenDanErin_InvalidExpiredCID = cid.MustParse("bafyreiguafxrlpncpjxxfuled2izocjp5s3kcclkdl4edpd22tr2gfcad4") + TokenDanErin_InvalidExpiredSealed = mustGetBundle(TokenDanErin_InvalidExpiredCID).Sealed + TokenDanErin_InvalidExpiredBundle = mustGetBundle(TokenDanErin_InvalidExpiredCID) + TokenDanErin_InvalidExpired = mustGetBundle(TokenDanErin_InvalidExpiredCID).Decoded ) var ( - TokenCarolDan_InvalidInactiveCID = cid.MustParse("bafyreicea5y2nvlitvxijkupeavtg23i7ktjk3uejnaquguurzptiabk4u") - TokenCarolDan_InvalidInactive = mustGetDelegation(TokenCarolDan_InvalidInactiveCID) + TokenErinFrank_InvalidExpiredCID = cid.MustParse("bafyreid4blvceraqiz32vca4gwk2hcf7dqtu6ydpmq3xlbj5biiq46mo44") + TokenErinFrank_InvalidExpiredSealed = mustGetBundle(TokenErinFrank_InvalidExpiredCID).Sealed + TokenErinFrank_InvalidExpiredBundle = mustGetBundle(TokenErinFrank_InvalidExpiredCID) + TokenErinFrank_InvalidExpired = mustGetBundle(TokenErinFrank_InvalidExpiredCID).Decoded ) var ( - TokenDanErin_InvalidInactiveCID = cid.MustParse("bafyreifsgqzkmxj2vexuts3z766mwcjreiisjg2jykyzf7tbj5sclutpvq") - TokenDanErin_InvalidInactive = mustGetDelegation(TokenDanErin_InvalidInactiveCID) + TokenCarolDan_InvalidInactiveCID = cid.MustParse("bafyreicea5y2nvlitvxijkupeavtg23i7ktjk3uejnaquguurzptiabk4u") + TokenCarolDan_InvalidInactiveSealed = mustGetBundle(TokenCarolDan_InvalidInactiveCID).Sealed + TokenCarolDan_InvalidInactiveBundle = mustGetBundle(TokenCarolDan_InvalidInactiveCID) + TokenCarolDan_InvalidInactive = mustGetBundle(TokenCarolDan_InvalidInactiveCID).Decoded ) var ( - TokenErinFrank_InvalidInactiveCID = cid.MustParse("bafyreifbfegon24c6dndiqyktahzs65vhyasrygbw7nhsvojn6distsdre") - TokenErinFrank_InvalidInactive = mustGetDelegation(TokenErinFrank_InvalidInactiveCID) + TokenDanErin_InvalidInactiveCID = cid.MustParse("bafyreifsgqzkmxj2vexuts3z766mwcjreiisjg2jykyzf7tbj5sclutpvq") + TokenDanErin_InvalidInactiveSealed = mustGetBundle(TokenDanErin_InvalidInactiveCID).Sealed + TokenDanErin_InvalidInactiveBundle = mustGetBundle(TokenDanErin_InvalidInactiveCID) + TokenDanErin_InvalidInactive = mustGetBundle(TokenDanErin_InvalidInactiveCID).Decoded ) var ( - TokenCarolDan_ValidExamplePolicyCID = cid.MustParse("bafyreibtfrp2njnkjrcuhxd4ebaecmpcql5knek2h2j2fjzu2sij2tv6ei") - TokenCarolDan_ValidExamplePolicy = mustGetDelegation(TokenCarolDan_ValidExamplePolicyCID) + TokenErinFrank_InvalidInactiveCID = cid.MustParse("bafyreifbfegon24c6dndiqyktahzs65vhyasrygbw7nhsvojn6distsdre") + TokenErinFrank_InvalidInactiveSealed = mustGetBundle(TokenErinFrank_InvalidInactiveCID).Sealed + TokenErinFrank_InvalidInactiveBundle = mustGetBundle(TokenErinFrank_InvalidInactiveCID) + TokenErinFrank_InvalidInactive = mustGetBundle(TokenErinFrank_InvalidInactiveCID).Decoded ) var ( - TokenDanErin_ValidExamplePolicyCID = cid.MustParse("bafyreidxfwbkzujpu7ivulkc7b6ff4cpbzrkeklmxqvyhhmkmym5b45e2e") - TokenDanErin_ValidExamplePolicy = mustGetDelegation(TokenDanErin_ValidExamplePolicyCID) + TokenCarolDan_ValidExamplePolicyCID = cid.MustParse("bafyreibtfrp2njnkjrcuhxd4ebaecmpcql5knek2h2j2fjzu2sij2tv6ei") + TokenCarolDan_ValidExamplePolicySealed = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID).Sealed + TokenCarolDan_ValidExamplePolicyBundle = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID) + TokenCarolDan_ValidExamplePolicy = mustGetBundle(TokenCarolDan_ValidExamplePolicyCID).Decoded ) var ( - TokenErinFrank_ValidExamplePolicyCID = cid.MustParse("bafyreiatkvtvgakqcrdk6vgrv7tbq5rbeiqct52ep4plcftp2agffjyvp4") - TokenErinFrank_ValidExamplePolicy = mustGetDelegation(TokenErinFrank_ValidExamplePolicyCID) + TokenDanErin_ValidExamplePolicyCID = cid.MustParse("bafyreidxfwbkzujpu7ivulkc7b6ff4cpbzrkeklmxqvyhhmkmym5b45e2e") + 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{ TokenAliceBobCID, } diff --git a/token/internal/envelope/example_test.go b/token/internal/envelope/example_test.go index 707488e..8644727 100644 --- a/token/internal/envelope/example_test.go +++ b/token/internal/envelope/example_test.go @@ -41,18 +41,18 @@ const ( var schemaBytes []byte var ( - once sync.Once - ts *schema.TypeSystem - err error + once sync.Once + ts *schema.TypeSystem + errSchema error ) func mustLoadSchema() *schema.TypeSystem { once.Do(func() { - ts, err = ipld.LoadSchemaBytes(schemaBytes) + ts, errSchema = ipld.LoadSchemaBytes(schemaBytes) }) - if err != nil { - panic(fmt.Errorf("failed to load IPLD schema: %s", err)) + if errSchema != nil { + panic(fmt.Errorf("failed to load IPLD schema: %s", errSchema)) } return ts