codersdk/allowlist_test.go
Rama main · réplica de lectura del repositorio original.
package codersdk_test
import (
"encoding/json"
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/coderd/rbac/policy"
"github.com/coder/coder/v2/codersdk"
)
func TestAPIAllowListTarget_JSONRoundTrip(t *testing.T) {
t.Parallel()
all := codersdk.AllowAllTarget()
b, err := json.Marshal(all)
require.NoError(t, err)
require.JSONEq(t, `"*:*"`, string(b))
var rt codersdk.APIAllowListTarget
require.NoError(t, json.Unmarshal(b, &rt))
require.Equal(t, codersdk.ResourceWildcard, rt.Type)
require.Equal(t, policy.WildcardSymbol, rt.ID)
ty := codersdk.AllowTypeTarget(codersdk.ResourceWorkspace)
b, err = json.Marshal(ty)
require.NoError(t, err)
require.JSONEq(t, `"workspace:*"`, string(b))
require.NoError(t, json.Unmarshal(b, &rt))
require.Equal(t, codersdk.ResourceWorkspace, rt.Type)
require.Equal(t, policy.WildcardSymbol, rt.ID)
id := uuid.New()
res := codersdk.AllowResourceTarget(codersdk.ResourceTemplate, id)
b, err = json.Marshal(res)
require.NoError(t, err)
exp := `"template:` + id.String() + `"`
require.JSONEq(t, exp, string(b))
}