-
Notifications
You must be signed in to change notification settings - Fork 6
/
s2a_utils_test.go
102 lines (95 loc) · 2.89 KB
/
s2a_utils_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
*
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package s2a
import (
"context"
"testing"
commonpb "github.com/google/s2a-go/internal/proto/common_go_proto"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/peer"
)
func TestAuthInfoFromContext(t *testing.T) {
ctx := context.Background()
s2aAuthInfo := &fakeS2AAuthInfo{}
p := &peer.Peer{
AuthInfo: s2aAuthInfo,
}
for _, tc := range []struct {
desc string
ctx context.Context
success bool
out AuthInfo
}{
{
"working case",
peer.NewContext(ctx, p),
true,
s2aAuthInfo,
},
} {
authInfo, err := AuthInfoFromContext(tc.ctx)
if got, want := (err == nil), tc.success; got != want {
t.Errorf("%v: AuthInfoFromContext(_)=(err=nil)=%v, want %v", tc.desc, got, want)
}
if got, want := authInfo, tc.out; got != want {
t.Errorf("%v:, AuthInfoFromContext(_)=(%v, _), want (%v, _)", tc.desc, got, want)
}
}
}
func TestAuthInfoFromPeer(t *testing.T) {
s2aAuthInfo := &fakeS2AAuthInfo{}
p := &peer.Peer{
AuthInfo: s2aAuthInfo,
}
for _, tc := range []struct {
desc string
p *peer.Peer
success bool
out AuthInfo
}{
{
"working case",
p,
true,
s2aAuthInfo,
},
} {
authInfo, err := AuthInfoFromPeer(tc.p)
if got, want := (err == nil), tc.success; got != want {
t.Errorf("%v: AuthInfoFromPeer(_)=(err=nil)=%v, want %v", tc.desc, got, want)
}
if got, want := authInfo, tc.out; got != want {
t.Errorf("%v:, AuthInfoFromPeer(_)=(%v, _), want (%v, _)", tc.desc, got, want)
}
}
}
type fakeS2AAuthInfo struct{}
func (*fakeS2AAuthInfo) AuthType() string { return "" }
func (*fakeS2AAuthInfo) ApplicationProtocol() string { return "" }
func (*fakeS2AAuthInfo) TLSVersion() commonpb.TLSVersion { return commonpb.TLSVersion_TLS1_3 }
func (*fakeS2AAuthInfo) Ciphersuite() commonpb.Ciphersuite {
return commonpb.Ciphersuite_AES_128_GCM_SHA256
}
func (*fakeS2AAuthInfo) PeerIdentity() *commonpb.Identity { return nil }
func (*fakeS2AAuthInfo) LocalIdentity() *commonpb.Identity { return nil }
func (*fakeS2AAuthInfo) PeerCertFingerprint() []byte { return nil }
func (*fakeS2AAuthInfo) LocalCertFingerprint() []byte { return nil }
func (*fakeS2AAuthInfo) IsHandshakeResumed() bool { return false }
func (*fakeS2AAuthInfo) SecurityLevel() credentials.SecurityLevel {
return credentials.PrivacyAndIntegrity
}