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.
 
 
 

799 lines
23 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 database
  16. import (
  17. emptypb "github.com/golang/protobuf/ptypes/empty"
  18. iampb "google.golang.org/genproto/googleapis/iam/v1"
  19. longrunningpb "google.golang.org/genproto/googleapis/longrunning"
  20. databasepb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
  21. )
  22. import (
  23. "context"
  24. "flag"
  25. "fmt"
  26. "io"
  27. "log"
  28. "net"
  29. "os"
  30. "strings"
  31. "testing"
  32. "github.com/golang/protobuf/proto"
  33. "github.com/golang/protobuf/ptypes"
  34. "google.golang.org/api/option"
  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. gstatus "google.golang.org/grpc/status"
  40. )
  41. var _ = io.EOF
  42. var _ = ptypes.MarshalAny
  43. var _ status.Status
  44. type mockDatabaseAdminServer struct {
  45. // Embed for forward compatibility.
  46. // Tests will keep working if more methods are added
  47. // in the future.
  48. databasepb.DatabaseAdminServer
  49. reqs []proto.Message
  50. // If set, all calls return this error.
  51. err error
  52. // responses to return if err == nil
  53. resps []proto.Message
  54. }
  55. func (s *mockDatabaseAdminServer) ListDatabases(ctx context.Context, req *databasepb.ListDatabasesRequest) (*databasepb.ListDatabasesResponse, error) {
  56. md, _ := metadata.FromIncomingContext(ctx)
  57. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  58. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  59. }
  60. s.reqs = append(s.reqs, req)
  61. if s.err != nil {
  62. return nil, s.err
  63. }
  64. return s.resps[0].(*databasepb.ListDatabasesResponse), nil
  65. }
  66. func (s *mockDatabaseAdminServer) CreateDatabase(ctx context.Context, req *databasepb.CreateDatabaseRequest) (*longrunningpb.Operation, error) {
  67. md, _ := metadata.FromIncomingContext(ctx)
  68. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  69. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  70. }
  71. s.reqs = append(s.reqs, req)
  72. if s.err != nil {
  73. return nil, s.err
  74. }
  75. return s.resps[0].(*longrunningpb.Operation), nil
  76. }
  77. func (s *mockDatabaseAdminServer) GetDatabase(ctx context.Context, req *databasepb.GetDatabaseRequest) (*databasepb.Database, error) {
  78. md, _ := metadata.FromIncomingContext(ctx)
  79. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  80. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  81. }
  82. s.reqs = append(s.reqs, req)
  83. if s.err != nil {
  84. return nil, s.err
  85. }
  86. return s.resps[0].(*databasepb.Database), nil
  87. }
  88. func (s *mockDatabaseAdminServer) UpdateDatabaseDdl(ctx context.Context, req *databasepb.UpdateDatabaseDdlRequest) (*longrunningpb.Operation, error) {
  89. md, _ := metadata.FromIncomingContext(ctx)
  90. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  91. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  92. }
  93. s.reqs = append(s.reqs, req)
  94. if s.err != nil {
  95. return nil, s.err
  96. }
  97. return s.resps[0].(*longrunningpb.Operation), nil
  98. }
  99. func (s *mockDatabaseAdminServer) DropDatabase(ctx context.Context, req *databasepb.DropDatabaseRequest) (*emptypb.Empty, error) {
  100. md, _ := metadata.FromIncomingContext(ctx)
  101. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  102. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  103. }
  104. s.reqs = append(s.reqs, req)
  105. if s.err != nil {
  106. return nil, s.err
  107. }
  108. return s.resps[0].(*emptypb.Empty), nil
  109. }
  110. func (s *mockDatabaseAdminServer) GetDatabaseDdl(ctx context.Context, req *databasepb.GetDatabaseDdlRequest) (*databasepb.GetDatabaseDdlResponse, error) {
  111. md, _ := metadata.FromIncomingContext(ctx)
  112. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  113. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  114. }
  115. s.reqs = append(s.reqs, req)
  116. if s.err != nil {
  117. return nil, s.err
  118. }
  119. return s.resps[0].(*databasepb.GetDatabaseDdlResponse), nil
  120. }
  121. func (s *mockDatabaseAdminServer) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest) (*iampb.Policy, error) {
  122. md, _ := metadata.FromIncomingContext(ctx)
  123. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  124. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  125. }
  126. s.reqs = append(s.reqs, req)
  127. if s.err != nil {
  128. return nil, s.err
  129. }
  130. return s.resps[0].(*iampb.Policy), nil
  131. }
  132. func (s *mockDatabaseAdminServer) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest) (*iampb.Policy, error) {
  133. md, _ := metadata.FromIncomingContext(ctx)
  134. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  135. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  136. }
  137. s.reqs = append(s.reqs, req)
  138. if s.err != nil {
  139. return nil, s.err
  140. }
  141. return s.resps[0].(*iampb.Policy), nil
  142. }
  143. func (s *mockDatabaseAdminServer) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) {
  144. md, _ := metadata.FromIncomingContext(ctx)
  145. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  146. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  147. }
  148. s.reqs = append(s.reqs, req)
  149. if s.err != nil {
  150. return nil, s.err
  151. }
  152. return s.resps[0].(*iampb.TestIamPermissionsResponse), nil
  153. }
  154. // clientOpt is the option tests should use to connect to the test server.
  155. // It is initialized by TestMain.
  156. var clientOpt option.ClientOption
  157. var (
  158. mockDatabaseAdmin mockDatabaseAdminServer
  159. )
  160. func TestMain(m *testing.M) {
  161. flag.Parse()
  162. serv := grpc.NewServer()
  163. databasepb.RegisterDatabaseAdminServer(serv, &mockDatabaseAdmin)
  164. lis, err := net.Listen("tcp", "localhost:0")
  165. if err != nil {
  166. log.Fatal(err)
  167. }
  168. go serv.Serve(lis)
  169. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  170. if err != nil {
  171. log.Fatal(err)
  172. }
  173. clientOpt = option.WithGRPCConn(conn)
  174. os.Exit(m.Run())
  175. }
  176. func TestDatabaseAdminListDatabases(t *testing.T) {
  177. var nextPageToken string = ""
  178. var databasesElement *databasepb.Database = &databasepb.Database{}
  179. var databases = []*databasepb.Database{databasesElement}
  180. var expectedResponse = &databasepb.ListDatabasesResponse{
  181. NextPageToken: nextPageToken,
  182. Databases: databases,
  183. }
  184. mockDatabaseAdmin.err = nil
  185. mockDatabaseAdmin.reqs = nil
  186. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  187. var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
  188. var request = &databasepb.ListDatabasesRequest{
  189. Parent: formattedParent,
  190. }
  191. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  192. if err != nil {
  193. t.Fatal(err)
  194. }
  195. resp, err := c.ListDatabases(context.Background(), request).Next()
  196. if err != nil {
  197. t.Fatal(err)
  198. }
  199. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  200. t.Errorf("wrong request %q, want %q", got, want)
  201. }
  202. want := (interface{})(expectedResponse.Databases[0])
  203. got := (interface{})(resp)
  204. var ok bool
  205. switch want := (want).(type) {
  206. case proto.Message:
  207. ok = proto.Equal(want, got.(proto.Message))
  208. default:
  209. ok = want == got
  210. }
  211. if !ok {
  212. t.Errorf("wrong response %q, want %q)", got, want)
  213. }
  214. }
  215. func TestDatabaseAdminListDatabasesError(t *testing.T) {
  216. errCode := codes.PermissionDenied
  217. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  218. var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
  219. var request = &databasepb.ListDatabasesRequest{
  220. Parent: formattedParent,
  221. }
  222. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  223. if err != nil {
  224. t.Fatal(err)
  225. }
  226. resp, err := c.ListDatabases(context.Background(), request).Next()
  227. if st, ok := gstatus.FromError(err); !ok {
  228. t.Errorf("got error %v, expected grpc error", err)
  229. } else if c := st.Code(); c != errCode {
  230. t.Errorf("got error code %q, want %q", c, errCode)
  231. }
  232. _ = resp
  233. }
  234. func TestDatabaseAdminCreateDatabase(t *testing.T) {
  235. var name string = "name3373707"
  236. var expectedResponse = &databasepb.Database{
  237. Name: name,
  238. }
  239. mockDatabaseAdmin.err = nil
  240. mockDatabaseAdmin.reqs = nil
  241. any, err := ptypes.MarshalAny(expectedResponse)
  242. if err != nil {
  243. t.Fatal(err)
  244. }
  245. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
  246. Name: "longrunning-test",
  247. Done: true,
  248. Result: &longrunningpb.Operation_Response{Response: any},
  249. })
  250. var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
  251. var createStatement string = "createStatement552974828"
  252. var request = &databasepb.CreateDatabaseRequest{
  253. Parent: formattedParent,
  254. CreateStatement: createStatement,
  255. }
  256. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  257. if err != nil {
  258. t.Fatal(err)
  259. }
  260. respLRO, err := c.CreateDatabase(context.Background(), request)
  261. if err != nil {
  262. t.Fatal(err)
  263. }
  264. resp, err := respLRO.Wait(context.Background())
  265. if err != nil {
  266. t.Fatal(err)
  267. }
  268. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  269. t.Errorf("wrong request %q, want %q", got, want)
  270. }
  271. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  272. t.Errorf("wrong response %q, want %q)", got, want)
  273. }
  274. }
  275. func TestDatabaseAdminCreateDatabaseError(t *testing.T) {
  276. errCode := codes.PermissionDenied
  277. mockDatabaseAdmin.err = nil
  278. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
  279. Name: "longrunning-test",
  280. Done: true,
  281. Result: &longrunningpb.Operation_Error{
  282. Error: &status.Status{
  283. Code: int32(errCode),
  284. Message: "test error",
  285. },
  286. },
  287. })
  288. var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
  289. var createStatement string = "createStatement552974828"
  290. var request = &databasepb.CreateDatabaseRequest{
  291. Parent: formattedParent,
  292. CreateStatement: createStatement,
  293. }
  294. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  295. if err != nil {
  296. t.Fatal(err)
  297. }
  298. respLRO, err := c.CreateDatabase(context.Background(), request)
  299. if err != nil {
  300. t.Fatal(err)
  301. }
  302. resp, err := respLRO.Wait(context.Background())
  303. if st, ok := gstatus.FromError(err); !ok {
  304. t.Errorf("got error %v, expected grpc error", err)
  305. } else if c := st.Code(); c != errCode {
  306. t.Errorf("got error code %q, want %q", c, errCode)
  307. }
  308. _ = resp
  309. }
  310. func TestDatabaseAdminGetDatabase(t *testing.T) {
  311. var name2 string = "name2-1052831874"
  312. var expectedResponse = &databasepb.Database{
  313. Name: name2,
  314. }
  315. mockDatabaseAdmin.err = nil
  316. mockDatabaseAdmin.reqs = nil
  317. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  318. var formattedName string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  319. var request = &databasepb.GetDatabaseRequest{
  320. Name: formattedName,
  321. }
  322. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  323. if err != nil {
  324. t.Fatal(err)
  325. }
  326. resp, err := c.GetDatabase(context.Background(), request)
  327. if err != nil {
  328. t.Fatal(err)
  329. }
  330. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  331. t.Errorf("wrong request %q, want %q", got, want)
  332. }
  333. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  334. t.Errorf("wrong response %q, want %q)", got, want)
  335. }
  336. }
  337. func TestDatabaseAdminGetDatabaseError(t *testing.T) {
  338. errCode := codes.PermissionDenied
  339. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  340. var formattedName string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  341. var request = &databasepb.GetDatabaseRequest{
  342. Name: formattedName,
  343. }
  344. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  345. if err != nil {
  346. t.Fatal(err)
  347. }
  348. resp, err := c.GetDatabase(context.Background(), request)
  349. if st, ok := gstatus.FromError(err); !ok {
  350. t.Errorf("got error %v, expected grpc error", err)
  351. } else if c := st.Code(); c != errCode {
  352. t.Errorf("got error code %q, want %q", c, errCode)
  353. }
  354. _ = resp
  355. }
  356. func TestDatabaseAdminUpdateDatabaseDdl(t *testing.T) {
  357. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  358. mockDatabaseAdmin.err = nil
  359. mockDatabaseAdmin.reqs = nil
  360. any, err := ptypes.MarshalAny(expectedResponse)
  361. if err != nil {
  362. t.Fatal(err)
  363. }
  364. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
  365. Name: "longrunning-test",
  366. Done: true,
  367. Result: &longrunningpb.Operation_Response{Response: any},
  368. })
  369. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  370. var statements []string = nil
  371. var request = &databasepb.UpdateDatabaseDdlRequest{
  372. Database: formattedDatabase,
  373. Statements: statements,
  374. }
  375. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  376. if err != nil {
  377. t.Fatal(err)
  378. }
  379. respLRO, err := c.UpdateDatabaseDdl(context.Background(), request)
  380. if err != nil {
  381. t.Fatal(err)
  382. }
  383. err = respLRO.Wait(context.Background())
  384. if err != nil {
  385. t.Fatal(err)
  386. }
  387. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  388. t.Errorf("wrong request %q, want %q", got, want)
  389. }
  390. }
  391. func TestDatabaseAdminUpdateDatabaseDdlError(t *testing.T) {
  392. errCode := codes.PermissionDenied
  393. mockDatabaseAdmin.err = nil
  394. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
  395. Name: "longrunning-test",
  396. Done: true,
  397. Result: &longrunningpb.Operation_Error{
  398. Error: &status.Status{
  399. Code: int32(errCode),
  400. Message: "test error",
  401. },
  402. },
  403. })
  404. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  405. var statements []string = nil
  406. var request = &databasepb.UpdateDatabaseDdlRequest{
  407. Database: formattedDatabase,
  408. Statements: statements,
  409. }
  410. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  411. if err != nil {
  412. t.Fatal(err)
  413. }
  414. respLRO, err := c.UpdateDatabaseDdl(context.Background(), request)
  415. if err != nil {
  416. t.Fatal(err)
  417. }
  418. err = respLRO.Wait(context.Background())
  419. if st, ok := gstatus.FromError(err); !ok {
  420. t.Errorf("got error %v, expected grpc error", err)
  421. } else if c := st.Code(); c != errCode {
  422. t.Errorf("got error code %q, want %q", c, errCode)
  423. }
  424. }
  425. func TestDatabaseAdminDropDatabase(t *testing.T) {
  426. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  427. mockDatabaseAdmin.err = nil
  428. mockDatabaseAdmin.reqs = nil
  429. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  430. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  431. var request = &databasepb.DropDatabaseRequest{
  432. Database: formattedDatabase,
  433. }
  434. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  435. if err != nil {
  436. t.Fatal(err)
  437. }
  438. err = c.DropDatabase(context.Background(), request)
  439. if err != nil {
  440. t.Fatal(err)
  441. }
  442. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  443. t.Errorf("wrong request %q, want %q", got, want)
  444. }
  445. }
  446. func TestDatabaseAdminDropDatabaseError(t *testing.T) {
  447. errCode := codes.PermissionDenied
  448. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  449. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  450. var request = &databasepb.DropDatabaseRequest{
  451. Database: formattedDatabase,
  452. }
  453. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  454. if err != nil {
  455. t.Fatal(err)
  456. }
  457. err = c.DropDatabase(context.Background(), request)
  458. if st, ok := gstatus.FromError(err); !ok {
  459. t.Errorf("got error %v, expected grpc error", err)
  460. } else if c := st.Code(); c != errCode {
  461. t.Errorf("got error code %q, want %q", c, errCode)
  462. }
  463. }
  464. func TestDatabaseAdminGetDatabaseDdl(t *testing.T) {
  465. var expectedResponse *databasepb.GetDatabaseDdlResponse = &databasepb.GetDatabaseDdlResponse{}
  466. mockDatabaseAdmin.err = nil
  467. mockDatabaseAdmin.reqs = nil
  468. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  469. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  470. var request = &databasepb.GetDatabaseDdlRequest{
  471. Database: formattedDatabase,
  472. }
  473. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  474. if err != nil {
  475. t.Fatal(err)
  476. }
  477. resp, err := c.GetDatabaseDdl(context.Background(), request)
  478. if err != nil {
  479. t.Fatal(err)
  480. }
  481. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  482. t.Errorf("wrong request %q, want %q", got, want)
  483. }
  484. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  485. t.Errorf("wrong response %q, want %q)", got, want)
  486. }
  487. }
  488. func TestDatabaseAdminGetDatabaseDdlError(t *testing.T) {
  489. errCode := codes.PermissionDenied
  490. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  491. var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  492. var request = &databasepb.GetDatabaseDdlRequest{
  493. Database: formattedDatabase,
  494. }
  495. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  496. if err != nil {
  497. t.Fatal(err)
  498. }
  499. resp, err := c.GetDatabaseDdl(context.Background(), request)
  500. if st, ok := gstatus.FromError(err); !ok {
  501. t.Errorf("got error %v, expected grpc error", err)
  502. } else if c := st.Code(); c != errCode {
  503. t.Errorf("got error code %q, want %q", c, errCode)
  504. }
  505. _ = resp
  506. }
  507. func TestDatabaseAdminSetIamPolicy(t *testing.T) {
  508. var version int32 = 351608024
  509. var etag []byte = []byte("21")
  510. var expectedResponse = &iampb.Policy{
  511. Version: version,
  512. Etag: etag,
  513. }
  514. mockDatabaseAdmin.err = nil
  515. mockDatabaseAdmin.reqs = nil
  516. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  517. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  518. var policy *iampb.Policy = &iampb.Policy{}
  519. var request = &iampb.SetIamPolicyRequest{
  520. Resource: formattedResource,
  521. Policy: policy,
  522. }
  523. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  524. if err != nil {
  525. t.Fatal(err)
  526. }
  527. resp, err := c.SetIamPolicy(context.Background(), request)
  528. if err != nil {
  529. t.Fatal(err)
  530. }
  531. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  532. t.Errorf("wrong request %q, want %q", got, want)
  533. }
  534. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  535. t.Errorf("wrong response %q, want %q)", got, want)
  536. }
  537. }
  538. func TestDatabaseAdminSetIamPolicyError(t *testing.T) {
  539. errCode := codes.PermissionDenied
  540. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  541. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  542. var policy *iampb.Policy = &iampb.Policy{}
  543. var request = &iampb.SetIamPolicyRequest{
  544. Resource: formattedResource,
  545. Policy: policy,
  546. }
  547. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  548. if err != nil {
  549. t.Fatal(err)
  550. }
  551. resp, err := c.SetIamPolicy(context.Background(), request)
  552. if st, ok := gstatus.FromError(err); !ok {
  553. t.Errorf("got error %v, expected grpc error", err)
  554. } else if c := st.Code(); c != errCode {
  555. t.Errorf("got error code %q, want %q", c, errCode)
  556. }
  557. _ = resp
  558. }
  559. func TestDatabaseAdminGetIamPolicy(t *testing.T) {
  560. var version int32 = 351608024
  561. var etag []byte = []byte("21")
  562. var expectedResponse = &iampb.Policy{
  563. Version: version,
  564. Etag: etag,
  565. }
  566. mockDatabaseAdmin.err = nil
  567. mockDatabaseAdmin.reqs = nil
  568. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  569. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  570. var request = &iampb.GetIamPolicyRequest{
  571. Resource: formattedResource,
  572. }
  573. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  574. if err != nil {
  575. t.Fatal(err)
  576. }
  577. resp, err := c.GetIamPolicy(context.Background(), request)
  578. if err != nil {
  579. t.Fatal(err)
  580. }
  581. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  582. t.Errorf("wrong request %q, want %q", got, want)
  583. }
  584. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  585. t.Errorf("wrong response %q, want %q)", got, want)
  586. }
  587. }
  588. func TestDatabaseAdminGetIamPolicyError(t *testing.T) {
  589. errCode := codes.PermissionDenied
  590. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  591. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  592. var request = &iampb.GetIamPolicyRequest{
  593. Resource: formattedResource,
  594. }
  595. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  596. if err != nil {
  597. t.Fatal(err)
  598. }
  599. resp, err := c.GetIamPolicy(context.Background(), request)
  600. if st, ok := gstatus.FromError(err); !ok {
  601. t.Errorf("got error %v, expected grpc error", err)
  602. } else if c := st.Code(); c != errCode {
  603. t.Errorf("got error code %q, want %q", c, errCode)
  604. }
  605. _ = resp
  606. }
  607. func TestDatabaseAdminTestIamPermissions(t *testing.T) {
  608. var expectedResponse *iampb.TestIamPermissionsResponse = &iampb.TestIamPermissionsResponse{}
  609. mockDatabaseAdmin.err = nil
  610. mockDatabaseAdmin.reqs = nil
  611. mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
  612. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  613. var permissions []string = nil
  614. var request = &iampb.TestIamPermissionsRequest{
  615. Resource: formattedResource,
  616. Permissions: permissions,
  617. }
  618. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  619. if err != nil {
  620. t.Fatal(err)
  621. }
  622. resp, err := c.TestIamPermissions(context.Background(), request)
  623. if err != nil {
  624. t.Fatal(err)
  625. }
  626. if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
  627. t.Errorf("wrong request %q, want %q", got, want)
  628. }
  629. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  630. t.Errorf("wrong response %q, want %q)", got, want)
  631. }
  632. }
  633. func TestDatabaseAdminTestIamPermissionsError(t *testing.T) {
  634. errCode := codes.PermissionDenied
  635. mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
  636. var formattedResource string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
  637. var permissions []string = nil
  638. var request = &iampb.TestIamPermissionsRequest{
  639. Resource: formattedResource,
  640. Permissions: permissions,
  641. }
  642. c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
  643. if err != nil {
  644. t.Fatal(err)
  645. }
  646. resp, err := c.TestIamPermissions(context.Background(), request)
  647. if st, ok := gstatus.FromError(err); !ok {
  648. t.Errorf("got error %v, expected grpc error", err)
  649. } else if c := st.Code(); c != errCode {
  650. t.Errorf("got error code %q, want %q", c, errCode)
  651. }
  652. _ = resp
  653. }