Skip to content

Commit 9affdbb

Browse files
internal/credentials/xds: add unit tests for HandshakeInfo.Equal (#7638)
1 parent 3196f7a commit 9affdbb

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

internal/credentials/xds/handshake_info_test.go

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,14 @@ import (
2525
"regexp"
2626
"testing"
2727

28+
"google.golang.org/grpc/credentials/tls/certprovider"
2829
"google.golang.org/grpc/internal/xds/matcher"
2930
)
3031

32+
type testCertProvider struct {
33+
certprovider.Provider
34+
}
35+
3136
func TestDNSMatch(t *testing.T) {
3237
tests := []struct {
3338
desc string
@@ -300,3 +305,88 @@ func TestMatchingSANExists_Success(t *testing.T) {
300305
func newStringP(s string) *string {
301306
return &s
302307
}
308+
309+
func TestEqual(t *testing.T) {
310+
tests := []struct {
311+
desc string
312+
hi1 *HandshakeInfo
313+
hi2 *HandshakeInfo
314+
wantMatch bool
315+
}{
316+
{
317+
desc: "both HandshakeInfo are nil",
318+
hi1: nil,
319+
hi2: nil,
320+
wantMatch: true,
321+
},
322+
{
323+
desc: "one HandshakeInfo is nil",
324+
hi1: nil,
325+
hi2: NewHandshakeInfo(&testCertProvider{}, nil, nil, false),
326+
wantMatch: false,
327+
},
328+
{
329+
desc: "different root providers",
330+
hi1: NewHandshakeInfo(&testCertProvider{}, nil, nil, false),
331+
hi2: NewHandshakeInfo(&testCertProvider{}, nil, nil, false),
332+
wantMatch: false,
333+
},
334+
{
335+
desc: "same providers, same SAN matchers",
336+
hi1: NewHandshakeInfo(testCertProvider{}, testCertProvider{}, []matcher.StringMatcher{
337+
matcher.StringMatcherForTesting(newStringP("foo.com"), nil, nil, nil, nil, false),
338+
}, false),
339+
hi2: NewHandshakeInfo(testCertProvider{}, testCertProvider{}, []matcher.StringMatcher{
340+
matcher.StringMatcherForTesting(newStringP("foo.com"), nil, nil, nil, nil, false),
341+
}, false),
342+
wantMatch: true,
343+
},
344+
{
345+
desc: "same providers, different SAN matchers",
346+
hi1: NewHandshakeInfo(testCertProvider{}, testCertProvider{}, []matcher.StringMatcher{
347+
matcher.StringMatcherForTesting(newStringP("foo.com"), nil, nil, nil, nil, false),
348+
}, false),
349+
hi2: NewHandshakeInfo(testCertProvider{}, testCertProvider{}, []matcher.StringMatcher{
350+
matcher.StringMatcherForTesting(newStringP("bar.com"), nil, nil, nil, nil, false),
351+
}, false),
352+
wantMatch: false,
353+
},
354+
{
355+
desc: "same SAN matchers with different content",
356+
hi1: NewHandshakeInfo(&testCertProvider{}, &testCertProvider{}, []matcher.StringMatcher{
357+
matcher.StringMatcherForTesting(newStringP("foo.com"), nil, nil, nil, nil, false),
358+
}, false),
359+
hi2: NewHandshakeInfo(&testCertProvider{}, &testCertProvider{}, []matcher.StringMatcher{
360+
matcher.StringMatcherForTesting(newStringP("foo.com"), nil, nil, nil, nil, false),
361+
matcher.StringMatcherForTesting(newStringP("bar.com"), nil, nil, nil, nil, false),
362+
}, false),
363+
wantMatch: false,
364+
},
365+
{
366+
desc: "different requireClientCert flags",
367+
hi1: NewHandshakeInfo(&testCertProvider{}, &testCertProvider{}, nil, true),
368+
hi2: NewHandshakeInfo(&testCertProvider{}, &testCertProvider{}, nil, false),
369+
wantMatch: false,
370+
},
371+
{
372+
desc: "same identity provider, different root provider",
373+
hi1: NewHandshakeInfo(&testCertProvider{}, testCertProvider{}, nil, false),
374+
hi2: NewHandshakeInfo(&testCertProvider{}, testCertProvider{}, nil, false),
375+
wantMatch: false,
376+
},
377+
{
378+
desc: "different identity provider, same root provider",
379+
hi1: NewHandshakeInfo(testCertProvider{}, &testCertProvider{}, nil, false),
380+
hi2: NewHandshakeInfo(testCertProvider{}, &testCertProvider{}, nil, false),
381+
wantMatch: false,
382+
},
383+
}
384+
385+
for _, test := range tests {
386+
t.Run(test.desc, func(t *testing.T) {
387+
if gotMatch := test.hi1.Equal(test.hi2); gotMatch != test.wantMatch {
388+
t.Errorf("hi1.Equal(hi2) = %v; wantMatch %v", gotMatch, test.wantMatch)
389+
}
390+
})
391+
}
392+
}

0 commit comments

Comments
 (0)