| /* |
| * |
| * Copyright 2018 gRPC authors. |
| * |
| * 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 |
| * |
| * http://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 authinfo |
| |
| import ( |
| "reflect" |
| "testing" |
| |
| altspb "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp" |
| "google.golang.org/grpc/internal/grpctest" |
| ) |
| |
| type s struct { |
| grpctest.Tester |
| } |
| |
| func Test(t *testing.T) { |
| grpctest.RunSubTests(t, s{}) |
| } |
| |
| const ( |
| testAppProtocol = "my_app" |
| testRecordProtocol = "very_secure_protocol" |
| testPeerAccount = "peer_service_account" |
| testLocalAccount = "local_service_account" |
| testPeerHostname = "peer_hostname" |
| testLocalHostname = "local_hostname" |
| testLocalPeerAttributeKey = "peer" |
| testLocalPeerAttributeValue = "attributes" |
| ) |
| |
| func (s) TestALTSAuthInfo(t *testing.T) { |
| testPeerAttributes := make(map[string]string) |
| testPeerAttributes[testLocalPeerAttributeKey] = testLocalPeerAttributeValue |
| for _, tc := range []struct { |
| result *altspb.HandshakerResult |
| outAppProtocol string |
| outRecordProtocol string |
| outSecurityLevel altspb.SecurityLevel |
| outPeerAccount string |
| outLocalAccount string |
| outPeerRPCVersions *altspb.RpcProtocolVersions |
| outPeerAttributes map[string]string |
| }{ |
| { |
| &altspb.HandshakerResult{ |
| ApplicationProtocol: testAppProtocol, |
| RecordProtocol: testRecordProtocol, |
| PeerIdentity: &altspb.Identity{ |
| IdentityOneof: &altspb.Identity_ServiceAccount{ |
| ServiceAccount: testPeerAccount, |
| }, |
| Attributes: testPeerAttributes, |
| }, |
| LocalIdentity: &altspb.Identity{ |
| IdentityOneof: &altspb.Identity_ServiceAccount{ |
| ServiceAccount: testLocalAccount, |
| }, |
| }, |
| }, |
| testAppProtocol, |
| testRecordProtocol, |
| altspb.SecurityLevel_INTEGRITY_AND_PRIVACY, |
| testPeerAccount, |
| testLocalAccount, |
| nil, |
| testPeerAttributes, |
| }, |
| { |
| &altspb.HandshakerResult{ |
| ApplicationProtocol: testAppProtocol, |
| RecordProtocol: testRecordProtocol, |
| PeerIdentity: &altspb.Identity{ |
| IdentityOneof: &altspb.Identity_Hostname{ |
| Hostname: testPeerHostname, |
| }, |
| Attributes: testPeerAttributes, |
| }, |
| LocalIdentity: &altspb.Identity{ |
| IdentityOneof: &altspb.Identity_Hostname{ |
| Hostname: testLocalHostname, |
| }, |
| }, |
| PeerRpcVersions: &altspb.RpcProtocolVersions{ |
| MaxRpcVersion: &altspb.RpcProtocolVersions_Version{ |
| Major: 20, |
| Minor: 21, |
| }, |
| MinRpcVersion: &altspb.RpcProtocolVersions_Version{ |
| Major: 10, |
| Minor: 11, |
| }, |
| }, |
| }, |
| testAppProtocol, |
| testRecordProtocol, |
| altspb.SecurityLevel_INTEGRITY_AND_PRIVACY, |
| "", |
| "", |
| &altspb.RpcProtocolVersions{ |
| MaxRpcVersion: &altspb.RpcProtocolVersions_Version{ |
| Major: 20, |
| Minor: 21, |
| }, |
| MinRpcVersion: &altspb.RpcProtocolVersions_Version{ |
| Major: 10, |
| Minor: 11, |
| }, |
| }, |
| testPeerAttributes, |
| }, |
| } { |
| authInfo := newAuthInfo(tc.result) |
| if got, want := authInfo.AuthType(), "alts"; got != want { |
| t.Errorf("authInfo.AuthType()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.ApplicationProtocol(), tc.outAppProtocol; got != want { |
| t.Errorf("authInfo.ApplicationProtocol()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.RecordProtocol(), tc.outRecordProtocol; got != want { |
| t.Errorf("authInfo.RecordProtocol()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.SecurityLevel(), tc.outSecurityLevel; got != want { |
| t.Errorf("authInfo.SecurityLevel()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.PeerServiceAccount(), tc.outPeerAccount; got != want { |
| t.Errorf("authInfo.PeerServiceAccount()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.LocalServiceAccount(), tc.outLocalAccount; got != want { |
| t.Errorf("authInfo.LocalServiceAccount()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.PeerRPCVersions(), tc.outPeerRPCVersions; !reflect.DeepEqual(got, want) { |
| t.Errorf("authinfo.PeerRpcVersions()=%v, want %v", got, want) |
| } |
| if got, want := authInfo.PeerAttributes(), tc.outPeerAttributes; !reflect.DeepEqual(got, want) { |
| t.Errorf("authinfo.PeerAttributes()=%v, want %v", got, want) |
| } |
| |
| } |
| } |