From c7f60343765f6afcf80b7c02194e9ed8e568659f Mon Sep 17 00:00:00 2001 From: Steve Moyer Date: Wed, 18 Sep 2024 15:54:46 -0400 Subject: [PATCH] test(delegation): move the other relevant tests from the envelope branch --- delegation/delegation_test.go | 74 ++++++++++++++++++-------------- delegation/ipld.go | 2 +- delegation/testdata/new.dagjson | 2 +- delegation/testdata/root.dagjson | 1 + 4 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 delegation/testdata/root.dagjson diff --git a/delegation/delegation_test.go b/delegation/delegation_test.go index db324ee..55934de 100644 --- a/delegation/delegation_test.go +++ b/delegation/delegation_test.go @@ -3,10 +3,17 @@ package delegation_test import ( "crypto/rand" "testing" + "time" + "github.com/ipld/go-ipld-prime/datamodel" + "github.com/ipld/go-ipld-prime/node/basicnode" "github.com/libp2p/go-libp2p/core/crypto" "github.com/stretchr/testify/require" + "github.com/ucan-wg/go-ucan/capability/command" + "github.com/ucan-wg/go-ucan/capability/policy" + "github.com/ucan-wg/go-ucan/delegation" "github.com/ucan-wg/go-ucan/did" + "gotest.tools/v3/golden" ) const ( @@ -60,55 +67,56 @@ const ( ` ) -// func TestConstructors(t *testing.T) { -// t.Parallel() +func TestConstructors(t *testing.T) { + t.Parallel() -// privKey := privKey(t, issuerPrivKeyCfg) + privKey := privKey(t, issuerPrivKeyCfg) -// aud, err := did.Parse(AudienceDID) + aud, err := did.Parse(AudienceDID) -// sub, err := did.Parse(subjectDID) -// require.NoError(t, err) + sub, err := did.Parse(subjectDID) + require.NoError(t, err) -// cmd, err := command.Parse(subJectCmd) -// require.NoError(t, err) + cmd, err := command.Parse(subJectCmd) + require.NoError(t, err) -// pol, err := policy.FromDagJson(subjectPol) -// require.NoError(t, err) + pol, err := policy.FromDagJson(subjectPol) + require.NoError(t, err) -// exp := time.Time{} + exp, err := time.Parse(time.RFC3339, "2200-01-01T00:00:00Z") + require.NoError(t, err) -// meta := map[string]datamodel.Node{ -// "foo": basicnode.NewString("fooo"), -// "bar": basicnode.NewString("barr"), -// } + meta := map[string]datamodel.Node{ + "foo": basicnode.NewString("fooo"), + "bar": basicnode.NewString("barr"), + } -// t.Run("New", func(t *testing.T) { -// dlg, err := delegation.New(privKey, aud, &sub, cmd, pol, []byte(nonce), delegation.WithExpiration(&exp), delegation.WithMeta(meta)) -// require.NoError(t, err) + t.Run("New", func(t *testing.T) { + dlg, err := delegation.New(privKey, aud, cmd, pol, []byte(nonce), delegation.WithSubject(sub), delegation.WithExpiration(exp), delegation.WithMetadata(meta)) + require.NoError(t, err) -// data, err := dlg.ToDagJson() -// require.NoError(t, err) + data, err := dlg.ToDagJson(privKey) + require.NoError(t, err) -// t.Log(string(data)) + t.Log(string(data)) -// golden.Assert(t, string(data), "new.dagjson") -// }) + golden.Assert(t, string(data), "new.dagjson") + }) -// t.Run("Root", func(t *testing.T) { -// t.Parallel() + t.Run("Root", func(t *testing.T) { + t.Parallel() -// dlg, err := delegation.Root(privKey, aud, cmd, pol, []byte(nonce), delegation.WithExpiration(&exp), delegation.WithMeta(meta)) -// require.NoError(t, err) + dlg, err := delegation.Root(privKey, aud, cmd, pol, []byte(nonce), delegation.WithExpiration(exp), delegation.WithMetadata(meta)) + require.NoError(t, err) -// data, err := dlg.ToDagJson() -// require.NoError(t, err) + data, err := dlg.ToDagJson(privKey) + require.NoError(t, err) -// t.Log(string(data)) + t.Log(string(data)) -// golden.Assert(t, string(data), "root.dagjson") -// }) -// } + golden.Assert(t, string(data), "root.dagjson") + }) +} func privKey(t *testing.T, privKeyCfg string) crypto.PrivKey { t.Helper() diff --git a/delegation/ipld.go b/delegation/ipld.go index 05198ca..c3d16e0 100644 --- a/delegation/ipld.go +++ b/delegation/ipld.go @@ -164,5 +164,5 @@ func FromIPLD(node datamodel.Node) (*Token, error) { return nil, err } - return viewFromModel(*tkn) + return tokenFromModel(*tkn) } diff --git a/delegation/testdata/new.dagjson b/delegation/testdata/new.dagjson index 9d06287..b921a94 100644 --- a/delegation/testdata/new.dagjson +++ b/delegation/testdata/new.dagjson @@ -1 +1 @@ -[{"/":{"bytes":"P2lPLfdMuZuc4NPZ0mbozU+/bn5xoWlJsu+Fvaxi4ICYXVJb9/wiTTht3WJEFqjxXLxfTl4BMZF3J1CNvMPqBg"}},{"h":{"/":{"bytes":"NO0BcQ"}},"ucan/dlg@1.0.0-rc.1":{"aud":"did:key:z6Mkq5YmbJcTrPExNDi26imrTCpKhepjBFBSHqrBDN2ArPkv","cmd":"/foo/bar","exp":-62135596800,"iss":"did:key:z6Mkpzn2n3ZGT2VaqMGSQC3tzmzV4TS9S71iFsDXE1WnoNH2","meta":{"bar":"barr","foo":"fooo"},"nonce":{"/":{"bytes":"NnJvRGhHaTBraU5yaVFBejdKM2QrYk9lb0kvdGo4RU5pa21RTmJ0am5EMA"}},"pol":[["==",".status","draft"],["all",".reviewer",["like",".email","*@example.com"]],["any",".tags",["or",[["==",".","news"],["==",".","press"]]]]],"sub":"did:key:z6MktA1uBdCpq4uJBqE9jjMiLyxZBg9a6xgPPKJjMqss6Zc2"}}] \ No newline at end of file +[{"/":{"bytes":"FM6otj0r/noJWiGAC5WV86xAazxrF173IihuHJgEt35CtSzjeaelrR3UwaSr8xbE9sLpo5xJhUbo0QLI273hDA"}},{"h":{"/":{"bytes":"NO0BcQ"}},"ucan/dlg@1.0.0-rc.1":{"aud":"did:key:z6Mkq5YmbJcTrPExNDi26imrTCpKhepjBFBSHqrBDN2ArPkv","cmd":"/foo/bar","exp":7258118400,"iss":"did:key:z6Mkpzn2n3ZGT2VaqMGSQC3tzmzV4TS9S71iFsDXE1WnoNH2","meta":{"bar":"barr","foo":"fooo"},"nonce":{"/":{"bytes":"NnJvRGhHaTBraU5yaVFBejdKM2QrYk9lb0kvdGo4RU5pa21RTmJ0am5EMA"}},"pol":[["==",".status","draft"],["all",".reviewer",["like",".email","*@example.com"]],["any",".tags",["or",[["==",".","news"],["==",".","press"]]]]],"sub":"did:key:z6MktA1uBdCpq4uJBqE9jjMiLyxZBg9a6xgPPKJjMqss6Zc2"}}] \ No newline at end of file diff --git a/delegation/testdata/root.dagjson b/delegation/testdata/root.dagjson new file mode 100644 index 0000000..a5c3933 --- /dev/null +++ b/delegation/testdata/root.dagjson @@ -0,0 +1 @@ +[{"/":{"bytes":"aYBq08tfm0zQZnPg/5tB9kM5mklRU9PPIkV7CK68jEgbd76JbCGuu75vfLyBu3WTqKzLSJ583pbwu668m/7MBQ"}},{"h":{"/":{"bytes":"NO0BcQ"}},"ucan/dlg@1.0.0-rc.1":{"aud":"did:key:z6Mkq5YmbJcTrPExNDi26imrTCpKhepjBFBSHqrBDN2ArPkv","cmd":"/foo/bar","exp":7258118400,"iss":"did:key:z6Mkpzn2n3ZGT2VaqMGSQC3tzmzV4TS9S71iFsDXE1WnoNH2","meta":{"bar":"barr","foo":"fooo"},"nonce":{"/":{"bytes":"NnJvRGhHaTBraU5yaVFBejdKM2QrYk9lb0kvdGo4RU5pa21RTmJ0am5EMA"}},"pol":[["==",".status","draft"],["all",".reviewer",["like",".email","*@example.com"]],["any",".tags",["or",[["==",".","news"],["==",".","press"]]]]],"sub":"did:key:z6Mkpzn2n3ZGT2VaqMGSQC3tzmzV4TS9S71iFsDXE1WnoNH2"}}] \ No newline at end of file