1// Copyright 2019 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by gapic-generator. DO NOT EDIT. 16 17package credentials 18 19import ( 20 "context" 21 "flag" 22 "fmt" 23 "io" 24 "log" 25 "net" 26 "os" 27 "strings" 28 "testing" 29 30 "github.com/golang/protobuf/proto" 31 "github.com/golang/protobuf/ptypes" 32 "google.golang.org/api/option" 33 credentialspb "google.golang.org/genproto/googleapis/iam/credentials/v1" 34 35 status "google.golang.org/genproto/googleapis/rpc/status" 36 "google.golang.org/grpc" 37 "google.golang.org/grpc/codes" 38 "google.golang.org/grpc/metadata" 39 40 gstatus "google.golang.org/grpc/status" 41) 42 43var _ = io.EOF 44var _ = ptypes.MarshalAny 45var _ status.Status 46 47type mockIamCredentialsServer struct { 48 // Embed for forward compatibility. 49 // Tests will keep working if more methods are added 50 // in the future. 51 credentialspb.IAMCredentialsServer 52 53 reqs []proto.Message 54 55 // If set, all calls return this error. 56 err error 57 58 // responses to return if err == nil 59 resps []proto.Message 60} 61 62func (s *mockIamCredentialsServer) GenerateAccessToken(ctx context.Context, req *credentialspb.GenerateAccessTokenRequest) (*credentialspb.GenerateAccessTokenResponse, error) { 63 md, _ := metadata.FromIncomingContext(ctx) 64 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 65 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 66 } 67 s.reqs = append(s.reqs, req) 68 if s.err != nil { 69 return nil, s.err 70 } 71 return s.resps[0].(*credentialspb.GenerateAccessTokenResponse), nil 72} 73 74func (s *mockIamCredentialsServer) GenerateIdToken(ctx context.Context, req *credentialspb.GenerateIdTokenRequest) (*credentialspb.GenerateIdTokenResponse, error) { 75 md, _ := metadata.FromIncomingContext(ctx) 76 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 77 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 78 } 79 s.reqs = append(s.reqs, req) 80 if s.err != nil { 81 return nil, s.err 82 } 83 return s.resps[0].(*credentialspb.GenerateIdTokenResponse), nil 84} 85 86func (s *mockIamCredentialsServer) SignBlob(ctx context.Context, req *credentialspb.SignBlobRequest) (*credentialspb.SignBlobResponse, error) { 87 md, _ := metadata.FromIncomingContext(ctx) 88 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 89 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 90 } 91 s.reqs = append(s.reqs, req) 92 if s.err != nil { 93 return nil, s.err 94 } 95 return s.resps[0].(*credentialspb.SignBlobResponse), nil 96} 97 98func (s *mockIamCredentialsServer) SignJwt(ctx context.Context, req *credentialspb.SignJwtRequest) (*credentialspb.SignJwtResponse, error) { 99 md, _ := metadata.FromIncomingContext(ctx) 100 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 101 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 102 } 103 s.reqs = append(s.reqs, req) 104 if s.err != nil { 105 return nil, s.err 106 } 107 return s.resps[0].(*credentialspb.SignJwtResponse), nil 108} 109 110// clientOpt is the option tests should use to connect to the test server. 111// It is initialized by TestMain. 112var clientOpt option.ClientOption 113 114var ( 115 mockIamCredentials mockIamCredentialsServer 116) 117 118func TestMain(m *testing.M) { 119 flag.Parse() 120 121 serv := grpc.NewServer() 122 credentialspb.RegisterIAMCredentialsServer(serv, &mockIamCredentials) 123 124 lis, err := net.Listen("tcp", "localhost:0") 125 if err != nil { 126 log.Fatal(err) 127 } 128 go serv.Serve(lis) 129 130 conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure()) 131 if err != nil { 132 log.Fatal(err) 133 } 134 clientOpt = option.WithGRPCConn(conn) 135 136 os.Exit(m.Run()) 137} 138 139func TestIamCredentialsGenerateAccessToken(t *testing.T) { 140 var accessToken string = "accessToken-1938933922" 141 var expectedResponse = &credentialspb.GenerateAccessTokenResponse{ 142 AccessToken: accessToken, 143 } 144 145 mockIamCredentials.err = nil 146 mockIamCredentials.reqs = nil 147 148 mockIamCredentials.resps = append(mockIamCredentials.resps[:0], expectedResponse) 149 150 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 151 var scope []string = nil 152 var request = &credentialspb.GenerateAccessTokenRequest{ 153 Name: formattedName, 154 Scope: scope, 155 } 156 157 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 158 if err != nil { 159 t.Fatal(err) 160 } 161 162 resp, err := c.GenerateAccessToken(context.Background(), request) 163 164 if err != nil { 165 t.Fatal(err) 166 } 167 168 if want, got := request, mockIamCredentials.reqs[0]; !proto.Equal(want, got) { 169 t.Errorf("wrong request %q, want %q", got, want) 170 } 171 172 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 173 t.Errorf("wrong response %q, want %q)", got, want) 174 } 175} 176 177func TestIamCredentialsGenerateAccessTokenError(t *testing.T) { 178 errCode := codes.PermissionDenied 179 mockIamCredentials.err = gstatus.Error(errCode, "test error") 180 181 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 182 var scope []string = nil 183 var request = &credentialspb.GenerateAccessTokenRequest{ 184 Name: formattedName, 185 Scope: scope, 186 } 187 188 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 189 if err != nil { 190 t.Fatal(err) 191 } 192 193 resp, err := c.GenerateAccessToken(context.Background(), request) 194 195 if st, ok := gstatus.FromError(err); !ok { 196 t.Errorf("got error %v, expected grpc error", err) 197 } else if c := st.Code(); c != errCode { 198 t.Errorf("got error code %q, want %q", c, errCode) 199 } 200 _ = resp 201} 202func TestIamCredentialsGenerateIdToken(t *testing.T) { 203 var token string = "token110541305" 204 var expectedResponse = &credentialspb.GenerateIdTokenResponse{ 205 Token: token, 206 } 207 208 mockIamCredentials.err = nil 209 mockIamCredentials.reqs = nil 210 211 mockIamCredentials.resps = append(mockIamCredentials.resps[:0], expectedResponse) 212 213 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 214 var audience string = "audience975628804" 215 var request = &credentialspb.GenerateIdTokenRequest{ 216 Name: formattedName, 217 Audience: audience, 218 } 219 220 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 221 if err != nil { 222 t.Fatal(err) 223 } 224 225 resp, err := c.GenerateIdToken(context.Background(), request) 226 227 if err != nil { 228 t.Fatal(err) 229 } 230 231 if want, got := request, mockIamCredentials.reqs[0]; !proto.Equal(want, got) { 232 t.Errorf("wrong request %q, want %q", got, want) 233 } 234 235 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 236 t.Errorf("wrong response %q, want %q)", got, want) 237 } 238} 239 240func TestIamCredentialsGenerateIdTokenError(t *testing.T) { 241 errCode := codes.PermissionDenied 242 mockIamCredentials.err = gstatus.Error(errCode, "test error") 243 244 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 245 var audience string = "audience975628804" 246 var request = &credentialspb.GenerateIdTokenRequest{ 247 Name: formattedName, 248 Audience: audience, 249 } 250 251 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 252 if err != nil { 253 t.Fatal(err) 254 } 255 256 resp, err := c.GenerateIdToken(context.Background(), request) 257 258 if st, ok := gstatus.FromError(err); !ok { 259 t.Errorf("got error %v, expected grpc error", err) 260 } else if c := st.Code(); c != errCode { 261 t.Errorf("got error code %q, want %q", c, errCode) 262 } 263 _ = resp 264} 265func TestIamCredentialsSignBlob(t *testing.T) { 266 var keyId string = "keyId-1134673157" 267 var signedBlob []byte = []byte("-32") 268 var expectedResponse = &credentialspb.SignBlobResponse{ 269 KeyId: keyId, 270 SignedBlob: signedBlob, 271 } 272 273 mockIamCredentials.err = nil 274 mockIamCredentials.reqs = nil 275 276 mockIamCredentials.resps = append(mockIamCredentials.resps[:0], expectedResponse) 277 278 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 279 var payload []byte = []byte("-114") 280 var request = &credentialspb.SignBlobRequest{ 281 Name: formattedName, 282 Payload: payload, 283 } 284 285 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 286 if err != nil { 287 t.Fatal(err) 288 } 289 290 resp, err := c.SignBlob(context.Background(), request) 291 292 if err != nil { 293 t.Fatal(err) 294 } 295 296 if want, got := request, mockIamCredentials.reqs[0]; !proto.Equal(want, got) { 297 t.Errorf("wrong request %q, want %q", got, want) 298 } 299 300 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 301 t.Errorf("wrong response %q, want %q)", got, want) 302 } 303} 304 305func TestIamCredentialsSignBlobError(t *testing.T) { 306 errCode := codes.PermissionDenied 307 mockIamCredentials.err = gstatus.Error(errCode, "test error") 308 309 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 310 var payload []byte = []byte("-114") 311 var request = &credentialspb.SignBlobRequest{ 312 Name: formattedName, 313 Payload: payload, 314 } 315 316 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 317 if err != nil { 318 t.Fatal(err) 319 } 320 321 resp, err := c.SignBlob(context.Background(), request) 322 323 if st, ok := gstatus.FromError(err); !ok { 324 t.Errorf("got error %v, expected grpc error", err) 325 } else if c := st.Code(); c != errCode { 326 t.Errorf("got error code %q, want %q", c, errCode) 327 } 328 _ = resp 329} 330func TestIamCredentialsSignJwt(t *testing.T) { 331 var keyId string = "keyId-1134673157" 332 var signedJwt string = "signedJwt-979546844" 333 var expectedResponse = &credentialspb.SignJwtResponse{ 334 KeyId: keyId, 335 SignedJwt: signedJwt, 336 } 337 338 mockIamCredentials.err = nil 339 mockIamCredentials.reqs = nil 340 341 mockIamCredentials.resps = append(mockIamCredentials.resps[:0], expectedResponse) 342 343 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 344 var payload string = "-114" 345 var request = &credentialspb.SignJwtRequest{ 346 Name: formattedName, 347 Payload: payload, 348 } 349 350 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 351 if err != nil { 352 t.Fatal(err) 353 } 354 355 resp, err := c.SignJwt(context.Background(), request) 356 357 if err != nil { 358 t.Fatal(err) 359 } 360 361 if want, got := request, mockIamCredentials.reqs[0]; !proto.Equal(want, got) { 362 t.Errorf("wrong request %q, want %q", got, want) 363 } 364 365 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 366 t.Errorf("wrong response %q, want %q)", got, want) 367 } 368} 369 370func TestIamCredentialsSignJwtError(t *testing.T) { 371 errCode := codes.PermissionDenied 372 mockIamCredentials.err = gstatus.Error(errCode, "test error") 373 374 var formattedName string = fmt.Sprintf("projects/%s/serviceAccounts/%s", "[PROJECT]", "[SERVICE_ACCOUNT]") 375 var payload string = "-114" 376 var request = &credentialspb.SignJwtRequest{ 377 Name: formattedName, 378 Payload: payload, 379 } 380 381 c, err := NewIamCredentialsClient(context.Background(), clientOpt) 382 if err != nil { 383 t.Fatal(err) 384 } 385 386 resp, err := c.SignJwt(context.Background(), request) 387 388 if st, ok := gstatus.FromError(err); !ok { 389 t.Errorf("got error %v, expected grpc error", err) 390 } else if c := st.Code(); c != errCode { 391 t.Errorf("got error code %q, want %q", c, errCode) 392 } 393 _ = resp 394} 395