You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

475 lines
14 KiB

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