auth/internal/domain/scope_test.go

55 lines
1.2 KiB
Go

package domain_test
import (
"testing"
"github.com/goccy/go-json"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"source.toby3d.me/website/indieauth/internal/domain"
)
/* TODO(toby3d): enable this after form package patch
func TestScopes_UnmarshalForm(t *testing.T) {
t.Parallel()
args := http.AcquireArgs()
defer http.ReleaseArgs(args)
args.Set("scope", "read update delete")
result := struct {
Scope domain.Scopes
}{
Scope: make(domain.Scopes, 0),
}
require.NoError(t, form.Unmarshal(args, &result))
assert.Equal(t, "read update delete", result.Scope.String())
}
*/
func TestScopes_UnmarshalJSON(t *testing.T) {
t.Parallel()
result := struct {
Scope domain.Scopes `json:"scope"`
}{}
require.NoError(t, json.Unmarshal([]byte(`{"scope":"read update delete"}`), &result))
assert.Equal(t, domain.Scopes{domain.ScopeRead, domain.ScopeUpdate, domain.ScopeDelete}, result.Scope)
}
func TestScopes_MarshalJSON(t *testing.T) {
t.Parallel()
result, err := json.Marshal(map[string]domain.Scopes{
"scope": {
domain.ScopeEmail,
domain.ScopeProfile,
domain.ScopeRead,
},
})
require.NoError(t, err)
assert.Equal(t, `{"scope":"email profile read"}`, string(result))
}