Files
ucan/capability/policy/ipld_test.go

46 lines
914 B
Go
Raw Permalink Normal View History

2024-09-01 20:27:54 +02:00
package policy
import (
"testing"
"github.com/ipld/go-ipld-prime"
"github.com/ipld/go-ipld-prime/codec/dagjson"
"github.com/stretchr/testify/require"
)
func TestIpldRoundTrip(t *testing.T) {
2024-09-02 02:25:34 +02:00
const illustrativeExample = `
[
2024-09-01 20:27:54 +02:00
["==", ".status", "draft"],
2024-09-02 02:25:34 +02:00
["all", ".reviewer", [
["like", ".email", "*@example.com"]]
],
["any", ".tags", [
["or", [
["==", ".", "news"],
["==", ".", "press"]]
2024-09-01 20:27:54 +02:00
]]
2024-09-02 02:25:34 +02:00
]
2024-09-01 20:27:54 +02:00
]`
for _, tc := range []struct {
2024-09-02 02:25:34 +02:00
name, dagJsonStr string
2024-09-01 20:27:54 +02:00
}{
{"illustrativeExample", illustrativeExample},
} {
2024-09-02 02:25:34 +02:00
nodes, err := ipld.Decode([]byte(tc.dagJsonStr), dagjson.Decode)
2024-09-01 20:27:54 +02:00
require.NoError(t, err)
2024-09-02 02:25:34 +02:00
pol, err := FromIPLD(nodes)
2024-09-01 20:27:54 +02:00
require.NoError(t, err)
wroteIpld, err := pol.ToIPLD()
require.NoError(t, err)
wroteAsDagJson, err := ipld.Encode(wroteIpld, dagjson.Encode)
require.NoError(t, err)
2024-09-02 02:25:34 +02:00
require.JSONEq(t, tc.dagJsonStr, string(wroteAsDagJson))
2024-09-01 20:27:54 +02:00
}
}