...

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

Documentation: github.com/ory/fosite

     1  package fosite
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestDefaultAudienceMatchingStrategy(t *testing.T) {
    11  	for k, tc := range []struct {
    12  		h   []string
    13  		n   []string
    14  		err bool
    15  	}{
    16  		{
    17  			h:   []string{},
    18  			n:   []string{},
    19  			err: false,
    20  		},
    21  		{
    22  			h:   []string{"http://foo/bar"},
    23  			n:   []string{},
    24  			err: false,
    25  		},
    26  		{
    27  			h:   []string{},
    28  			n:   []string{"http://foo/bar"},
    29  			err: true,
    30  		},
    31  		{
    32  			h:   []string{"https://cloud.ory.sh/api/users"},
    33  			n:   []string{"https://cloud.ory.sh/api/users"},
    34  			err: false,
    35  		},
    36  		{
    37  			h:   []string{"https://cloud.ory.sh/api/users"},
    38  			n:   []string{"https://cloud.ory.sh/api/users/"},
    39  			err: false,
    40  		},
    41  		{
    42  			h:   []string{"https://cloud.ory.sh/api/users/"},
    43  			n:   []string{"https://cloud.ory.sh/api/users/"},
    44  			err: false,
    45  		},
    46  		{
    47  			h:   []string{"https://cloud.ory.sh/api/users/"},
    48  			n:   []string{"https://cloud.ory.sh/api/users"},
    49  			err: false,
    50  		},
    51  		{
    52  			h:   []string{"https://cloud.ory.sh/api/users"},
    53  			n:   []string{"https://cloud.ory.sh/api/users/1234"},
    54  			err: false,
    55  		},
    56  		{
    57  			h:   []string{"https://cloud.ory.sh/api/users"},
    58  			n:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/users/", "https://cloud.ory.sh/api/users/1234"},
    59  			err: false,
    60  		},
    61  		{
    62  			h:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/tenants"},
    63  			n:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/users/", "https://cloud.ory.sh/api/users/1234", "https://cloud.ory.sh/api/tenants"},
    64  			err: false,
    65  		},
    66  		{
    67  			h:   []string{"https://cloud.ory.sh/api/users"},
    68  			n:   []string{"https://cloud.ory.sh/api/users1234"},
    69  			err: true,
    70  		},
    71  		{
    72  			h:   []string{"https://cloud.ory.sh/api/users"},
    73  			n:   []string{"http://cloud.ory.sh/api/users"},
    74  			err: true,
    75  		},
    76  		{
    77  			h:   []string{"https://cloud.ory.sh/api/users"},
    78  			n:   []string{"https://cloud.ory.sh:8000/api/users"},
    79  			err: true,
    80  		},
    81  		{
    82  			h:   []string{"https://cloud.ory.sh/api/users"},
    83  			n:   []string{"https://cloud.ory.xyz/api/users"},
    84  			err: true,
    85  		},
    86  		{
    87  			h:   []string{"foobar"},
    88  			n:   []string{"foobar"},
    89  			err: false,
    90  		},
    91  		{
    92  			h:   []string{"foo bar"},
    93  			n:   []string{"foo bar"},
    94  			err: false,
    95  		},
    96  		{
    97  			h:   []string{"foobar"},
    98  			n:   []string{"foobar"},
    99  			err: false,
   100  		},
   101  		{
   102  			h:   []string{"zoo", "bar"},
   103  			n:   []string{"zoo"},
   104  			err: false,
   105  		},
   106  		{
   107  			h:   []string{"zoo"},
   108  			n:   []string{"zoo", "bar"},
   109  			err: true,
   110  		},
   111  		{
   112  			h:   []string{"foobar"},
   113  			n:   []string{"foobar/"},
   114  			err: false,
   115  		},
   116  		{
   117  			h:   []string{"foobar/"},
   118  			n:   []string{"foobar"},
   119  			err: false,
   120  		},
   121  	} {
   122  		t.Run(fmt.Sprintf("case=%d", k), func(t *testing.T) {
   123  			err := DefaultAudienceMatchingStrategy(tc.h, tc.n)
   124  			if tc.err {
   125  				require.Error(t, err)
   126  			} else {
   127  				require.NoError(t, err)
   128  			}
   129  		})
   130  	}
   131  }
   132  
   133  func TestExactAudienceMatchingStrategy(t *testing.T) {
   134  	for k, tc := range []struct {
   135  		h   []string
   136  		n   []string
   137  		err bool
   138  	}{
   139  		{
   140  			h:   []string{},
   141  			n:   []string{},
   142  			err: false,
   143  		},
   144  		{
   145  			h:   []string{"http://foo/bar"},
   146  			n:   []string{},
   147  			err: false,
   148  		},
   149  		{
   150  			h:   []string{},
   151  			n:   []string{"http://foo/bar"},
   152  			err: true,
   153  		},
   154  		{
   155  			h:   []string{"https://cloud.ory.sh/api/users"},
   156  			n:   []string{"https://cloud.ory.sh/api/users"},
   157  			err: false,
   158  		},
   159  		{
   160  			h:   []string{"https://cloud.ory.sh/api/users"},
   161  			n:   []string{"https://cloud.ory.sh/api/users/"},
   162  			err: true,
   163  		},
   164  		{
   165  			h:   []string{"https://cloud.ory.sh/api/users/"},
   166  			n:   []string{"https://cloud.ory.sh/api/users/"},
   167  			err: false,
   168  		},
   169  		{
   170  			h:   []string{"https://cloud.ory.sh/api/users/"},
   171  			n:   []string{"https://cloud.ory.sh/api/users"},
   172  			err: true,
   173  		},
   174  		{
   175  			h:   []string{"https://cloud.ory.sh/api/users"},
   176  			n:   []string{"https://cloud.ory.sh/api/users/1234"},
   177  			err: true,
   178  		},
   179  		{
   180  			h:   []string{"https://cloud.ory.sh/api/users"},
   181  			n:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/users/", "https://cloud.ory.sh/api/users/1234"},
   182  			err: true,
   183  		},
   184  		{
   185  			h:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/tenants"},
   186  			n:   []string{"https://cloud.ory.sh/api/users", "https://cloud.ory.sh/api/users/", "https://cloud.ory.sh/api/users/1234", "https://cloud.ory.sh/api/tenants"},
   187  			err: true,
   188  		},
   189  		{
   190  			h:   []string{"https://cloud.ory.sh/api/users"},
   191  			n:   []string{"https://cloud.ory.sh/api/users1234"},
   192  			err: true,
   193  		},
   194  		{
   195  			h:   []string{"https://cloud.ory.sh/api/users"},
   196  			n:   []string{"http://cloud.ory.sh/api/users"},
   197  			err: true,
   198  		},
   199  		{
   200  			h:   []string{"https://cloud.ory.sh/api/users"},
   201  			n:   []string{"https://cloud.ory.sh:8000/api/users"},
   202  			err: true,
   203  		},
   204  		{
   205  			h:   []string{"https://cloud.ory.sh/api/users"},
   206  			n:   []string{"https://cloud.ory.xyz/api/users"},
   207  			err: true,
   208  		},
   209  		{
   210  			h:   []string{"foobar"},
   211  			n:   []string{"foobar"},
   212  			err: false,
   213  		},
   214  		{
   215  			h:   []string{"foo bar"},
   216  			n:   []string{"foo bar"},
   217  			err: false,
   218  		},
   219  		{
   220  			h:   []string{"foobar"},
   221  			n:   []string{"foobar"},
   222  			err: false,
   223  		},
   224  		{
   225  			h:   []string{"zoo", "bar"},
   226  			n:   []string{"zoo"},
   227  			err: false,
   228  		},
   229  		{
   230  			h:   []string{"zoo"},
   231  			n:   []string{"zoo", "bar"},
   232  			err: true,
   233  		},
   234  		{
   235  			h:   []string{"foobar"},
   236  			n:   []string{"foobar/"},
   237  			err: true,
   238  		},
   239  		{
   240  			h:   []string{"foobar/"},
   241  			n:   []string{"foobar"},
   242  			err: true,
   243  		},
   244  	} {
   245  		t.Run(fmt.Sprintf("case=%d", k), func(t *testing.T) {
   246  			err := ExactAudienceMatchingStrategy(tc.h, tc.n)
   247  			if tc.err {
   248  				require.Error(t, err)
   249  			} else {
   250  				require.NoError(t, err)
   251  			}
   252  		})
   253  	}
   254  }
   255  

View as plain text