hydra/oauth2/helper_test.go

85 lines
2.1 KiB
Go

// Copyright © 2022 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package oauth2_test
import (
"context"
"testing"
"github.com/oleiade/reflections"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/ory/fosite"
"github.com/ory/fosite/handler/oauth2"
"github.com/ory/fosite/token/hmac"
)
func Tokens(c fosite.Configurator, length int) (res [][]string) {
s := oauth2.NewHMACSHAStrategy(&hmac.HMACStrategy{Config: c}, c)
for i := 0; i < length; i++ {
tok, sig, _ := s.Enigma.Generate(context.Background())
res = append(res, []string{sig, tok})
}
return res
}
func AssertObjectKeysEqual(t *testing.T, a, b interface{}, keys ...string) {
assert.True(t, len(keys) > 0, "No keys provided.")
for _, k := range keys {
c, err := reflections.GetField(a, k)
assert.Nil(t, err)
d, err := reflections.GetField(b, k)
assert.Nil(t, err)
assert.Equal(t, c, d, "%s", k)
}
}
func AssertObjectKeysNotEqual(t *testing.T, a, b interface{}, keys ...string) {
assert.True(t, len(keys) > 0, "No keys provided.")
for _, k := range keys {
c, err := reflections.GetField(a, k)
assert.Nil(t, err)
d, err := reflections.GetField(b, k)
assert.Nil(t, err)
assert.NotEqual(t, c, d, "%s", k)
}
}
func RequireObjectKeysEqual(t *testing.T, a, b interface{}, keys ...string) {
assert.True(t, len(keys) > 0, "No keys provided.")
for _, k := range keys {
c, err := reflections.GetField(a, k)
assert.Nil(t, err)
d, err := reflections.GetField(b, k)
assert.Nil(t, err)
require.Equal(t, c, d, "%s", k)
}
}
func RequireObjectKeysNotEqual(t *testing.T, a, b interface{}, keys ...string) {
assert.True(t, len(keys) > 0, "No keys provided.")
for _, k := range keys {
c, err := reflections.GetField(a, k)
assert.Nil(t, err)
d, err := reflections.GetField(b, k)
assert.Nil(t, err)
require.NotEqual(t, c, d, "%s", k)
}
}
func TestAssertObjectsAreEqualByKeys(t *testing.T) {
type foo struct {
Name string
Body int
}
a := &foo{"foo", 1}
b := &foo{"bar", 1}
c := &foo{"baz", 3}
AssertObjectKeysEqual(t, a, a, "Name", "Body")
AssertObjectKeysNotEqual(t, a, b, "Name")
AssertObjectKeysNotEqual(t, a, c, "Name", "Body")
}