Ctrl K
ComunidadGuías…

codersdk/allowlist_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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))
}