...

Source file src/github.com/ory/fosite/equalKeys_test.go

Documentation: github.com/ory/fosite

     1  /*
     2   * Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   *
    16   * @author		Aeneas Rekkas <aeneas+oss@aeneas.io>
    17   * @copyright 	2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
    18   * @license 	Apache-2.0
    19   *
    20   */
    21  
    22  package fosite_test
    23  
    24  import (
    25  	"testing"
    26  
    27  	"github.com/oleiade/reflections"
    28  	"github.com/stretchr/testify/assert"
    29  	"github.com/stretchr/testify/require"
    30  )
    31  
    32  func TestAssertObjectsAreEqualByKeys(t *testing.T) {
    33  	type foo struct {
    34  		Name string
    35  		Body int
    36  	}
    37  	a := &foo{"foo", 1}
    38  	b := &foo{"bar", 1}
    39  	c := &foo{"baz", 3}
    40  
    41  	AssertObjectKeysEqual(t, a, a, "Name", "Body")
    42  	AssertObjectKeysNotEqual(t, a, b, "Name")
    43  	AssertObjectKeysNotEqual(t, a, c, "Name", "Body")
    44  }
    45  
    46  func AssertObjectKeysEqual(t *testing.T, a, b interface{}, keys ...string) {
    47  	assert.True(t, len(keys) > 0, "No keys provided.")
    48  	for _, k := range keys {
    49  		c, err := reflections.GetField(a, k)
    50  		assert.NoError(t, err)
    51  		d, err := reflections.GetField(b, k)
    52  		assert.NoError(t, err)
    53  		assert.Equal(t, c, d, "field: %s", k)
    54  	}
    55  }
    56  
    57  func AssertObjectKeysNotEqual(t *testing.T, a, b interface{}, keys ...string) {
    58  	assert.True(t, len(keys) > 0, "No keys provided.")
    59  	for _, k := range keys {
    60  		c, err := reflections.GetField(a, k)
    61  		assert.NoError(t, err)
    62  		d, err := reflections.GetField(b, k)
    63  		assert.NoError(t, err)
    64  		assert.NotEqual(t, c, d, "%s", k)
    65  	}
    66  }
    67  
    68  func RequireObjectKeysEqual(t *testing.T, a, b interface{}, keys ...string) {
    69  	assert.True(t, len(keys) > 0, "No keys provided.")
    70  	for _, k := range keys {
    71  		c, err := reflections.GetField(a, k)
    72  		assert.NoError(t, err)
    73  		d, err := reflections.GetField(b, k)
    74  		assert.NoError(t, err)
    75  		require.Equal(t, c, d, "%s", k)
    76  	}
    77  }
    78  func RequireObjectKeysNotEqual(t *testing.T, a, b interface{}, keys ...string) {
    79  	assert.True(t, len(keys) > 0, "No keys provided.")
    80  	for _, k := range keys {
    81  		c, err := reflections.GetField(a, k)
    82  		assert.NoError(t, err)
    83  		d, err := reflections.GetField(b, k)
    84  		assert.NoError(t, err)
    85  		require.NotEqual(t, c, d, "%s", k)
    86  	}
    87  }
    88  

View as plain text