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.
 
 
 

1154 lines
32 KiB

  1. // Copyright 2018 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 firestore
  16. import (
  17. emptypb "github.com/golang/protobuf/ptypes/empty"
  18. firestorepb "google.golang.org/genproto/googleapis/firestore/v1"
  19. )
  20. import (
  21. "context"
  22. "flag"
  23. "fmt"
  24. "io"
  25. "log"
  26. "net"
  27. "os"
  28. "strings"
  29. "testing"
  30. "github.com/golang/protobuf/proto"
  31. "github.com/golang/protobuf/ptypes"
  32. "google.golang.org/api/option"
  33. status "google.golang.org/genproto/googleapis/rpc/status"
  34. "google.golang.org/grpc"
  35. "google.golang.org/grpc/codes"
  36. "google.golang.org/grpc/metadata"
  37. gstatus "google.golang.org/grpc/status"
  38. )
  39. var _ = io.EOF
  40. var _ = ptypes.MarshalAny
  41. var _ status.Status
  42. type mockFirestoreServer struct {
  43. // Embed for forward compatibility.
  44. // Tests will keep working if more methods are added
  45. // in the future.
  46. firestorepb.FirestoreServer
  47. reqs []proto.Message
  48. // If set, all calls return this error.
  49. err error
  50. // responses to return if err == nil
  51. resps []proto.Message
  52. }
  53. func (s *mockFirestoreServer) GetDocument(ctx context.Context, req *firestorepb.GetDocumentRequest) (*firestorepb.Document, error) {
  54. md, _ := metadata.FromIncomingContext(ctx)
  55. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  56. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  57. }
  58. s.reqs = append(s.reqs, req)
  59. if s.err != nil {
  60. return nil, s.err
  61. }
  62. return s.resps[0].(*firestorepb.Document), nil
  63. }
  64. func (s *mockFirestoreServer) ListDocuments(ctx context.Context, req *firestorepb.ListDocumentsRequest) (*firestorepb.ListDocumentsResponse, error) {
  65. md, _ := metadata.FromIncomingContext(ctx)
  66. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  67. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  68. }
  69. s.reqs = append(s.reqs, req)
  70. if s.err != nil {
  71. return nil, s.err
  72. }
  73. return s.resps[0].(*firestorepb.ListDocumentsResponse), nil
  74. }
  75. func (s *mockFirestoreServer) CreateDocument(ctx context.Context, req *firestorepb.CreateDocumentRequest) (*firestorepb.Document, error) {
  76. md, _ := metadata.FromIncomingContext(ctx)
  77. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  78. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  79. }
  80. s.reqs = append(s.reqs, req)
  81. if s.err != nil {
  82. return nil, s.err
  83. }
  84. return s.resps[0].(*firestorepb.Document), nil
  85. }
  86. func (s *mockFirestoreServer) UpdateDocument(ctx context.Context, req *firestorepb.UpdateDocumentRequest) (*firestorepb.Document, 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].(*firestorepb.Document), nil
  96. }
  97. func (s *mockFirestoreServer) DeleteDocument(ctx context.Context, req *firestorepb.DeleteDocumentRequest) (*emptypb.Empty, error) {
  98. md, _ := metadata.FromIncomingContext(ctx)
  99. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  100. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  101. }
  102. s.reqs = append(s.reqs, req)
  103. if s.err != nil {
  104. return nil, s.err
  105. }
  106. return s.resps[0].(*emptypb.Empty), nil
  107. }
  108. func (s *mockFirestoreServer) BatchGetDocuments(req *firestorepb.BatchGetDocumentsRequest, stream firestorepb.Firestore_BatchGetDocumentsServer) error {
  109. md, _ := metadata.FromIncomingContext(stream.Context())
  110. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  111. return fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  112. }
  113. s.reqs = append(s.reqs, req)
  114. if s.err != nil {
  115. return s.err
  116. }
  117. for _, v := range s.resps {
  118. if err := stream.Send(v.(*firestorepb.BatchGetDocumentsResponse)); err != nil {
  119. return err
  120. }
  121. }
  122. return nil
  123. }
  124. func (s *mockFirestoreServer) BeginTransaction(ctx context.Context, req *firestorepb.BeginTransactionRequest) (*firestorepb.BeginTransactionResponse, error) {
  125. md, _ := metadata.FromIncomingContext(ctx)
  126. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  127. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  128. }
  129. s.reqs = append(s.reqs, req)
  130. if s.err != nil {
  131. return nil, s.err
  132. }
  133. return s.resps[0].(*firestorepb.BeginTransactionResponse), nil
  134. }
  135. func (s *mockFirestoreServer) Commit(ctx context.Context, req *firestorepb.CommitRequest) (*firestorepb.CommitResponse, error) {
  136. md, _ := metadata.FromIncomingContext(ctx)
  137. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  138. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  139. }
  140. s.reqs = append(s.reqs, req)
  141. if s.err != nil {
  142. return nil, s.err
  143. }
  144. return s.resps[0].(*firestorepb.CommitResponse), nil
  145. }
  146. func (s *mockFirestoreServer) Rollback(ctx context.Context, req *firestorepb.RollbackRequest) (*emptypb.Empty, error) {
  147. md, _ := metadata.FromIncomingContext(ctx)
  148. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  149. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  150. }
  151. s.reqs = append(s.reqs, req)
  152. if s.err != nil {
  153. return nil, s.err
  154. }
  155. return s.resps[0].(*emptypb.Empty), nil
  156. }
  157. func (s *mockFirestoreServer) RunQuery(req *firestorepb.RunQueryRequest, stream firestorepb.Firestore_RunQueryServer) error {
  158. md, _ := metadata.FromIncomingContext(stream.Context())
  159. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  160. return fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  161. }
  162. s.reqs = append(s.reqs, req)
  163. if s.err != nil {
  164. return s.err
  165. }
  166. for _, v := range s.resps {
  167. if err := stream.Send(v.(*firestorepb.RunQueryResponse)); err != nil {
  168. return err
  169. }
  170. }
  171. return nil
  172. }
  173. func (s *mockFirestoreServer) Write(stream firestorepb.Firestore_WriteServer) error {
  174. md, _ := metadata.FromIncomingContext(stream.Context())
  175. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  176. return fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  177. }
  178. for {
  179. if req, err := stream.Recv(); err == io.EOF {
  180. break
  181. } else if err != nil {
  182. return err
  183. } else {
  184. s.reqs = append(s.reqs, req)
  185. }
  186. }
  187. if s.err != nil {
  188. return s.err
  189. }
  190. for _, v := range s.resps {
  191. if err := stream.Send(v.(*firestorepb.WriteResponse)); err != nil {
  192. return err
  193. }
  194. }
  195. return nil
  196. }
  197. func (s *mockFirestoreServer) Listen(stream firestorepb.Firestore_ListenServer) error {
  198. md, _ := metadata.FromIncomingContext(stream.Context())
  199. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  200. return fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  201. }
  202. for {
  203. if req, err := stream.Recv(); err == io.EOF {
  204. break
  205. } else if err != nil {
  206. return err
  207. } else {
  208. s.reqs = append(s.reqs, req)
  209. }
  210. }
  211. if s.err != nil {
  212. return s.err
  213. }
  214. for _, v := range s.resps {
  215. if err := stream.Send(v.(*firestorepb.ListenResponse)); err != nil {
  216. return err
  217. }
  218. }
  219. return nil
  220. }
  221. func (s *mockFirestoreServer) ListCollectionIds(ctx context.Context, req *firestorepb.ListCollectionIdsRequest) (*firestorepb.ListCollectionIdsResponse, error) {
  222. md, _ := metadata.FromIncomingContext(ctx)
  223. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  224. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  225. }
  226. s.reqs = append(s.reqs, req)
  227. if s.err != nil {
  228. return nil, s.err
  229. }
  230. return s.resps[0].(*firestorepb.ListCollectionIdsResponse), nil
  231. }
  232. // clientOpt is the option tests should use to connect to the test server.
  233. // It is initialized by TestMain.
  234. var clientOpt option.ClientOption
  235. var (
  236. mockFirestore mockFirestoreServer
  237. )
  238. func TestMain(m *testing.M) {
  239. flag.Parse()
  240. serv := grpc.NewServer()
  241. firestorepb.RegisterFirestoreServer(serv, &mockFirestore)
  242. lis, err := net.Listen("tcp", "localhost:0")
  243. if err != nil {
  244. log.Fatal(err)
  245. }
  246. go serv.Serve(lis)
  247. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  248. if err != nil {
  249. log.Fatal(err)
  250. }
  251. clientOpt = option.WithGRPCConn(conn)
  252. os.Exit(m.Run())
  253. }
  254. func TestFirestoreGetDocument(t *testing.T) {
  255. var name2 string = "name2-1052831874"
  256. var expectedResponse = &firestorepb.Document{
  257. Name: name2,
  258. }
  259. mockFirestore.err = nil
  260. mockFirestore.reqs = nil
  261. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  262. var formattedName string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  263. var request = &firestorepb.GetDocumentRequest{
  264. Name: formattedName,
  265. }
  266. c, err := NewClient(context.Background(), clientOpt)
  267. if err != nil {
  268. t.Fatal(err)
  269. }
  270. resp, err := c.GetDocument(context.Background(), request)
  271. if err != nil {
  272. t.Fatal(err)
  273. }
  274. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  275. t.Errorf("wrong request %q, want %q", got, want)
  276. }
  277. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  278. t.Errorf("wrong response %q, want %q)", got, want)
  279. }
  280. }
  281. func TestFirestoreGetDocumentError(t *testing.T) {
  282. errCode := codes.PermissionDenied
  283. mockFirestore.err = gstatus.Error(errCode, "test error")
  284. var formattedName string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  285. var request = &firestorepb.GetDocumentRequest{
  286. Name: formattedName,
  287. }
  288. c, err := NewClient(context.Background(), clientOpt)
  289. if err != nil {
  290. t.Fatal(err)
  291. }
  292. resp, err := c.GetDocument(context.Background(), request)
  293. if st, ok := gstatus.FromError(err); !ok {
  294. t.Errorf("got error %v, expected grpc error", err)
  295. } else if c := st.Code(); c != errCode {
  296. t.Errorf("got error code %q, want %q", c, errCode)
  297. }
  298. _ = resp
  299. }
  300. func TestFirestoreListDocuments(t *testing.T) {
  301. var nextPageToken string = ""
  302. var documentsElement *firestorepb.Document = &firestorepb.Document{}
  303. var documents = []*firestorepb.Document{documentsElement}
  304. var expectedResponse = &firestorepb.ListDocumentsResponse{
  305. NextPageToken: nextPageToken,
  306. Documents: documents,
  307. }
  308. mockFirestore.err = nil
  309. mockFirestore.reqs = nil
  310. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  311. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  312. var collectionId string = "collectionId-821242276"
  313. var request = &firestorepb.ListDocumentsRequest{
  314. Parent: formattedParent,
  315. CollectionId: collectionId,
  316. }
  317. c, err := NewClient(context.Background(), clientOpt)
  318. if err != nil {
  319. t.Fatal(err)
  320. }
  321. resp, err := c.ListDocuments(context.Background(), request).Next()
  322. if err != nil {
  323. t.Fatal(err)
  324. }
  325. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  326. t.Errorf("wrong request %q, want %q", got, want)
  327. }
  328. want := (interface{})(expectedResponse.Documents[0])
  329. got := (interface{})(resp)
  330. var ok bool
  331. switch want := (want).(type) {
  332. case proto.Message:
  333. ok = proto.Equal(want, got.(proto.Message))
  334. default:
  335. ok = want == got
  336. }
  337. if !ok {
  338. t.Errorf("wrong response %q, want %q)", got, want)
  339. }
  340. }
  341. func TestFirestoreListDocumentsError(t *testing.T) {
  342. errCode := codes.PermissionDenied
  343. mockFirestore.err = gstatus.Error(errCode, "test error")
  344. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  345. var collectionId string = "collectionId-821242276"
  346. var request = &firestorepb.ListDocumentsRequest{
  347. Parent: formattedParent,
  348. CollectionId: collectionId,
  349. }
  350. c, err := NewClient(context.Background(), clientOpt)
  351. if err != nil {
  352. t.Fatal(err)
  353. }
  354. resp, err := c.ListDocuments(context.Background(), request).Next()
  355. if st, ok := gstatus.FromError(err); !ok {
  356. t.Errorf("got error %v, expected grpc error", err)
  357. } else if c := st.Code(); c != errCode {
  358. t.Errorf("got error code %q, want %q", c, errCode)
  359. }
  360. _ = resp
  361. }
  362. func TestFirestoreCreateDocument(t *testing.T) {
  363. var name string = "name3373707"
  364. var expectedResponse = &firestorepb.Document{
  365. Name: name,
  366. }
  367. mockFirestore.err = nil
  368. mockFirestore.reqs = nil
  369. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  370. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  371. var collectionId string = "collectionId-821242276"
  372. var documentId string = "documentId506676927"
  373. var document *firestorepb.Document = &firestorepb.Document{}
  374. var request = &firestorepb.CreateDocumentRequest{
  375. Parent: formattedParent,
  376. CollectionId: collectionId,
  377. DocumentId: documentId,
  378. Document: document,
  379. }
  380. c, err := NewClient(context.Background(), clientOpt)
  381. if err != nil {
  382. t.Fatal(err)
  383. }
  384. resp, err := c.CreateDocument(context.Background(), request)
  385. if err != nil {
  386. t.Fatal(err)
  387. }
  388. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  389. t.Errorf("wrong request %q, want %q", got, want)
  390. }
  391. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  392. t.Errorf("wrong response %q, want %q)", got, want)
  393. }
  394. }
  395. func TestFirestoreCreateDocumentError(t *testing.T) {
  396. errCode := codes.PermissionDenied
  397. mockFirestore.err = gstatus.Error(errCode, "test error")
  398. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  399. var collectionId string = "collectionId-821242276"
  400. var documentId string = "documentId506676927"
  401. var document *firestorepb.Document = &firestorepb.Document{}
  402. var request = &firestorepb.CreateDocumentRequest{
  403. Parent: formattedParent,
  404. CollectionId: collectionId,
  405. DocumentId: documentId,
  406. Document: document,
  407. }
  408. c, err := NewClient(context.Background(), clientOpt)
  409. if err != nil {
  410. t.Fatal(err)
  411. }
  412. resp, err := c.CreateDocument(context.Background(), request)
  413. if st, ok := gstatus.FromError(err); !ok {
  414. t.Errorf("got error %v, expected grpc error", err)
  415. } else if c := st.Code(); c != errCode {
  416. t.Errorf("got error code %q, want %q", c, errCode)
  417. }
  418. _ = resp
  419. }
  420. func TestFirestoreUpdateDocument(t *testing.T) {
  421. var name string = "name3373707"
  422. var expectedResponse = &firestorepb.Document{
  423. Name: name,
  424. }
  425. mockFirestore.err = nil
  426. mockFirestore.reqs = nil
  427. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  428. var document *firestorepb.Document = &firestorepb.Document{}
  429. var updateMask *firestorepb.DocumentMask = &firestorepb.DocumentMask{}
  430. var request = &firestorepb.UpdateDocumentRequest{
  431. Document: document,
  432. UpdateMask: updateMask,
  433. }
  434. c, err := NewClient(context.Background(), clientOpt)
  435. if err != nil {
  436. t.Fatal(err)
  437. }
  438. resp, err := c.UpdateDocument(context.Background(), request)
  439. if err != nil {
  440. t.Fatal(err)
  441. }
  442. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  443. t.Errorf("wrong request %q, want %q", got, want)
  444. }
  445. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  446. t.Errorf("wrong response %q, want %q)", got, want)
  447. }
  448. }
  449. func TestFirestoreUpdateDocumentError(t *testing.T) {
  450. errCode := codes.PermissionDenied
  451. mockFirestore.err = gstatus.Error(errCode, "test error")
  452. var document *firestorepb.Document = &firestorepb.Document{}
  453. var updateMask *firestorepb.DocumentMask = &firestorepb.DocumentMask{}
  454. var request = &firestorepb.UpdateDocumentRequest{
  455. Document: document,
  456. UpdateMask: updateMask,
  457. }
  458. c, err := NewClient(context.Background(), clientOpt)
  459. if err != nil {
  460. t.Fatal(err)
  461. }
  462. resp, err := c.UpdateDocument(context.Background(), request)
  463. if st, ok := gstatus.FromError(err); !ok {
  464. t.Errorf("got error %v, expected grpc error", err)
  465. } else if c := st.Code(); c != errCode {
  466. t.Errorf("got error code %q, want %q", c, errCode)
  467. }
  468. _ = resp
  469. }
  470. func TestFirestoreDeleteDocument(t *testing.T) {
  471. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  472. mockFirestore.err = nil
  473. mockFirestore.reqs = nil
  474. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  475. var formattedName string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  476. var request = &firestorepb.DeleteDocumentRequest{
  477. Name: formattedName,
  478. }
  479. c, err := NewClient(context.Background(), clientOpt)
  480. if err != nil {
  481. t.Fatal(err)
  482. }
  483. err = c.DeleteDocument(context.Background(), request)
  484. if err != nil {
  485. t.Fatal(err)
  486. }
  487. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  488. t.Errorf("wrong request %q, want %q", got, want)
  489. }
  490. }
  491. func TestFirestoreDeleteDocumentError(t *testing.T) {
  492. errCode := codes.PermissionDenied
  493. mockFirestore.err = gstatus.Error(errCode, "test error")
  494. var formattedName string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  495. var request = &firestorepb.DeleteDocumentRequest{
  496. Name: formattedName,
  497. }
  498. c, err := NewClient(context.Background(), clientOpt)
  499. if err != nil {
  500. t.Fatal(err)
  501. }
  502. err = c.DeleteDocument(context.Background(), request)
  503. if st, ok := gstatus.FromError(err); !ok {
  504. t.Errorf("got error %v, expected grpc error", err)
  505. } else if c := st.Code(); c != errCode {
  506. t.Errorf("got error code %q, want %q", c, errCode)
  507. }
  508. }
  509. func TestFirestoreBatchGetDocuments(t *testing.T) {
  510. var missing string = "missing1069449574"
  511. var transaction []byte = []byte("-34")
  512. var expectedResponse = &firestorepb.BatchGetDocumentsResponse{
  513. Result: &firestorepb.BatchGetDocumentsResponse_Missing{
  514. Missing: missing,
  515. },
  516. Transaction: transaction,
  517. }
  518. mockFirestore.err = nil
  519. mockFirestore.reqs = nil
  520. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  521. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  522. var documents []string = nil
  523. var request = &firestorepb.BatchGetDocumentsRequest{
  524. Database: formattedDatabase,
  525. Documents: documents,
  526. }
  527. c, err := NewClient(context.Background(), clientOpt)
  528. if err != nil {
  529. t.Fatal(err)
  530. }
  531. stream, err := c.BatchGetDocuments(context.Background(), request)
  532. if err != nil {
  533. t.Fatal(err)
  534. }
  535. resp, err := stream.Recv()
  536. if err != nil {
  537. t.Fatal(err)
  538. }
  539. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  540. t.Errorf("wrong request %q, want %q", got, want)
  541. }
  542. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  543. t.Errorf("wrong response %q, want %q)", got, want)
  544. }
  545. }
  546. func TestFirestoreBatchGetDocumentsError(t *testing.T) {
  547. errCode := codes.PermissionDenied
  548. mockFirestore.err = gstatus.Error(errCode, "test error")
  549. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  550. var documents []string = nil
  551. var request = &firestorepb.BatchGetDocumentsRequest{
  552. Database: formattedDatabase,
  553. Documents: documents,
  554. }
  555. c, err := NewClient(context.Background(), clientOpt)
  556. if err != nil {
  557. t.Fatal(err)
  558. }
  559. stream, err := c.BatchGetDocuments(context.Background(), request)
  560. if err != nil {
  561. t.Fatal(err)
  562. }
  563. resp, err := stream.Recv()
  564. if st, ok := gstatus.FromError(err); !ok {
  565. t.Errorf("got error %v, expected grpc error", err)
  566. } else if c := st.Code(); c != errCode {
  567. t.Errorf("got error code %q, want %q", c, errCode)
  568. }
  569. _ = resp
  570. }
  571. func TestFirestoreBeginTransaction(t *testing.T) {
  572. var transaction []byte = []byte("-34")
  573. var expectedResponse = &firestorepb.BeginTransactionResponse{
  574. Transaction: transaction,
  575. }
  576. mockFirestore.err = nil
  577. mockFirestore.reqs = nil
  578. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  579. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  580. var request = &firestorepb.BeginTransactionRequest{
  581. Database: formattedDatabase,
  582. }
  583. c, err := NewClient(context.Background(), clientOpt)
  584. if err != nil {
  585. t.Fatal(err)
  586. }
  587. resp, err := c.BeginTransaction(context.Background(), request)
  588. if err != nil {
  589. t.Fatal(err)
  590. }
  591. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  592. t.Errorf("wrong request %q, want %q", got, want)
  593. }
  594. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  595. t.Errorf("wrong response %q, want %q)", got, want)
  596. }
  597. }
  598. func TestFirestoreBeginTransactionError(t *testing.T) {
  599. errCode := codes.PermissionDenied
  600. mockFirestore.err = gstatus.Error(errCode, "test error")
  601. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  602. var request = &firestorepb.BeginTransactionRequest{
  603. Database: formattedDatabase,
  604. }
  605. c, err := NewClient(context.Background(), clientOpt)
  606. if err != nil {
  607. t.Fatal(err)
  608. }
  609. resp, err := c.BeginTransaction(context.Background(), request)
  610. if st, ok := gstatus.FromError(err); !ok {
  611. t.Errorf("got error %v, expected grpc error", err)
  612. } else if c := st.Code(); c != errCode {
  613. t.Errorf("got error code %q, want %q", c, errCode)
  614. }
  615. _ = resp
  616. }
  617. func TestFirestoreCommit(t *testing.T) {
  618. var expectedResponse *firestorepb.CommitResponse = &firestorepb.CommitResponse{}
  619. mockFirestore.err = nil
  620. mockFirestore.reqs = nil
  621. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  622. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  623. var writes []*firestorepb.Write = nil
  624. var request = &firestorepb.CommitRequest{
  625. Database: formattedDatabase,
  626. Writes: writes,
  627. }
  628. c, err := NewClient(context.Background(), clientOpt)
  629. if err != nil {
  630. t.Fatal(err)
  631. }
  632. resp, err := c.Commit(context.Background(), request)
  633. if err != nil {
  634. t.Fatal(err)
  635. }
  636. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  637. t.Errorf("wrong request %q, want %q", got, want)
  638. }
  639. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  640. t.Errorf("wrong response %q, want %q)", got, want)
  641. }
  642. }
  643. func TestFirestoreCommitError(t *testing.T) {
  644. errCode := codes.PermissionDenied
  645. mockFirestore.err = gstatus.Error(errCode, "test error")
  646. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  647. var writes []*firestorepb.Write = nil
  648. var request = &firestorepb.CommitRequest{
  649. Database: formattedDatabase,
  650. Writes: writes,
  651. }
  652. c, err := NewClient(context.Background(), clientOpt)
  653. if err != nil {
  654. t.Fatal(err)
  655. }
  656. resp, err := c.Commit(context.Background(), request)
  657. if st, ok := gstatus.FromError(err); !ok {
  658. t.Errorf("got error %v, expected grpc error", err)
  659. } else if c := st.Code(); c != errCode {
  660. t.Errorf("got error code %q, want %q", c, errCode)
  661. }
  662. _ = resp
  663. }
  664. func TestFirestoreRollback(t *testing.T) {
  665. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  666. mockFirestore.err = nil
  667. mockFirestore.reqs = nil
  668. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  669. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  670. var transaction []byte = []byte("-34")
  671. var request = &firestorepb.RollbackRequest{
  672. Database: formattedDatabase,
  673. Transaction: transaction,
  674. }
  675. c, err := NewClient(context.Background(), clientOpt)
  676. if err != nil {
  677. t.Fatal(err)
  678. }
  679. err = c.Rollback(context.Background(), request)
  680. if err != nil {
  681. t.Fatal(err)
  682. }
  683. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  684. t.Errorf("wrong request %q, want %q", got, want)
  685. }
  686. }
  687. func TestFirestoreRollbackError(t *testing.T) {
  688. errCode := codes.PermissionDenied
  689. mockFirestore.err = gstatus.Error(errCode, "test error")
  690. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  691. var transaction []byte = []byte("-34")
  692. var request = &firestorepb.RollbackRequest{
  693. Database: formattedDatabase,
  694. Transaction: transaction,
  695. }
  696. c, err := NewClient(context.Background(), clientOpt)
  697. if err != nil {
  698. t.Fatal(err)
  699. }
  700. err = c.Rollback(context.Background(), request)
  701. if st, ok := gstatus.FromError(err); !ok {
  702. t.Errorf("got error %v, expected grpc error", err)
  703. } else if c := st.Code(); c != errCode {
  704. t.Errorf("got error code %q, want %q", c, errCode)
  705. }
  706. }
  707. func TestFirestoreRunQuery(t *testing.T) {
  708. var transaction []byte = []byte("-34")
  709. var skippedResults int32 = 880286183
  710. var expectedResponse = &firestorepb.RunQueryResponse{
  711. Transaction: transaction,
  712. SkippedResults: skippedResults,
  713. }
  714. mockFirestore.err = nil
  715. mockFirestore.reqs = nil
  716. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  717. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  718. var request = &firestorepb.RunQueryRequest{
  719. Parent: formattedParent,
  720. }
  721. c, err := NewClient(context.Background(), clientOpt)
  722. if err != nil {
  723. t.Fatal(err)
  724. }
  725. stream, err := c.RunQuery(context.Background(), request)
  726. if err != nil {
  727. t.Fatal(err)
  728. }
  729. resp, err := stream.Recv()
  730. if err != nil {
  731. t.Fatal(err)
  732. }
  733. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  734. t.Errorf("wrong request %q, want %q", got, want)
  735. }
  736. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  737. t.Errorf("wrong response %q, want %q)", got, want)
  738. }
  739. }
  740. func TestFirestoreRunQueryError(t *testing.T) {
  741. errCode := codes.PermissionDenied
  742. mockFirestore.err = gstatus.Error(errCode, "test error")
  743. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  744. var request = &firestorepb.RunQueryRequest{
  745. Parent: formattedParent,
  746. }
  747. c, err := NewClient(context.Background(), clientOpt)
  748. if err != nil {
  749. t.Fatal(err)
  750. }
  751. stream, err := c.RunQuery(context.Background(), request)
  752. if err != nil {
  753. t.Fatal(err)
  754. }
  755. resp, err := stream.Recv()
  756. if st, ok := gstatus.FromError(err); !ok {
  757. t.Errorf("got error %v, expected grpc error", err)
  758. } else if c := st.Code(); c != errCode {
  759. t.Errorf("got error code %q, want %q", c, errCode)
  760. }
  761. _ = resp
  762. }
  763. func TestFirestoreWrite(t *testing.T) {
  764. var streamId string = "streamId-315624902"
  765. var streamToken []byte = []byte("122")
  766. var expectedResponse = &firestorepb.WriteResponse{
  767. StreamId: streamId,
  768. StreamToken: streamToken,
  769. }
  770. mockFirestore.err = nil
  771. mockFirestore.reqs = nil
  772. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  773. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  774. var request = &firestorepb.WriteRequest{
  775. Database: formattedDatabase,
  776. }
  777. c, err := NewClient(context.Background(), clientOpt)
  778. if err != nil {
  779. t.Fatal(err)
  780. }
  781. stream, err := c.Write(context.Background())
  782. if err != nil {
  783. t.Fatal(err)
  784. }
  785. if err := stream.Send(request); err != nil {
  786. t.Fatal(err)
  787. }
  788. if err := stream.CloseSend(); err != nil {
  789. t.Fatal(err)
  790. }
  791. resp, err := stream.Recv()
  792. if err != nil {
  793. t.Fatal(err)
  794. }
  795. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  796. t.Errorf("wrong request %q, want %q", got, want)
  797. }
  798. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  799. t.Errorf("wrong response %q, want %q)", got, want)
  800. }
  801. }
  802. func TestFirestoreWriteError(t *testing.T) {
  803. errCode := codes.PermissionDenied
  804. mockFirestore.err = gstatus.Error(errCode, "test error")
  805. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  806. var request = &firestorepb.WriteRequest{
  807. Database: formattedDatabase,
  808. }
  809. c, err := NewClient(context.Background(), clientOpt)
  810. if err != nil {
  811. t.Fatal(err)
  812. }
  813. stream, err := c.Write(context.Background())
  814. if err != nil {
  815. t.Fatal(err)
  816. }
  817. if err := stream.Send(request); err != nil {
  818. t.Fatal(err)
  819. }
  820. if err := stream.CloseSend(); err != nil {
  821. t.Fatal(err)
  822. }
  823. resp, err := stream.Recv()
  824. if st, ok := gstatus.FromError(err); !ok {
  825. t.Errorf("got error %v, expected grpc error", err)
  826. } else if c := st.Code(); c != errCode {
  827. t.Errorf("got error code %q, want %q", c, errCode)
  828. }
  829. _ = resp
  830. }
  831. func TestFirestoreListen(t *testing.T) {
  832. var expectedResponse *firestorepb.ListenResponse = &firestorepb.ListenResponse{}
  833. mockFirestore.err = nil
  834. mockFirestore.reqs = nil
  835. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  836. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  837. var request = &firestorepb.ListenRequest{
  838. Database: formattedDatabase,
  839. }
  840. c, err := NewClient(context.Background(), clientOpt)
  841. if err != nil {
  842. t.Fatal(err)
  843. }
  844. stream, err := c.Listen(context.Background())
  845. if err != nil {
  846. t.Fatal(err)
  847. }
  848. if err := stream.Send(request); err != nil {
  849. t.Fatal(err)
  850. }
  851. if err := stream.CloseSend(); err != nil {
  852. t.Fatal(err)
  853. }
  854. resp, err := stream.Recv()
  855. if err != nil {
  856. t.Fatal(err)
  857. }
  858. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  859. t.Errorf("wrong request %q, want %q", got, want)
  860. }
  861. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  862. t.Errorf("wrong response %q, want %q)", got, want)
  863. }
  864. }
  865. func TestFirestoreListenError(t *testing.T) {
  866. errCode := codes.PermissionDenied
  867. mockFirestore.err = gstatus.Error(errCode, "test error")
  868. var formattedDatabase string = fmt.Sprintf("projects/%s/databases/%s", "[PROJECT]", "[DATABASE]")
  869. var request = &firestorepb.ListenRequest{
  870. Database: formattedDatabase,
  871. }
  872. c, err := NewClient(context.Background(), clientOpt)
  873. if err != nil {
  874. t.Fatal(err)
  875. }
  876. stream, err := c.Listen(context.Background())
  877. if err != nil {
  878. t.Fatal(err)
  879. }
  880. if err := stream.Send(request); err != nil {
  881. t.Fatal(err)
  882. }
  883. if err := stream.CloseSend(); err != nil {
  884. t.Fatal(err)
  885. }
  886. resp, err := stream.Recv()
  887. if st, ok := gstatus.FromError(err); !ok {
  888. t.Errorf("got error %v, expected grpc error", err)
  889. } else if c := st.Code(); c != errCode {
  890. t.Errorf("got error code %q, want %q", c, errCode)
  891. }
  892. _ = resp
  893. }
  894. func TestFirestoreListCollectionIds(t *testing.T) {
  895. var nextPageToken string = ""
  896. var collectionIdsElement string = "collectionIdsElement1368994900"
  897. var collectionIds = []string{collectionIdsElement}
  898. var expectedResponse = &firestorepb.ListCollectionIdsResponse{
  899. NextPageToken: nextPageToken,
  900. CollectionIds: collectionIds,
  901. }
  902. mockFirestore.err = nil
  903. mockFirestore.reqs = nil
  904. mockFirestore.resps = append(mockFirestore.resps[:0], expectedResponse)
  905. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  906. var request = &firestorepb.ListCollectionIdsRequest{
  907. Parent: formattedParent,
  908. }
  909. c, err := NewClient(context.Background(), clientOpt)
  910. if err != nil {
  911. t.Fatal(err)
  912. }
  913. resp, err := c.ListCollectionIds(context.Background(), request).Next()
  914. if err != nil {
  915. t.Fatal(err)
  916. }
  917. if want, got := request, mockFirestore.reqs[0]; !proto.Equal(want, got) {
  918. t.Errorf("wrong request %q, want %q", got, want)
  919. }
  920. want := (interface{})(expectedResponse.CollectionIds[0])
  921. got := (interface{})(resp)
  922. var ok bool
  923. switch want := (want).(type) {
  924. case proto.Message:
  925. ok = proto.Equal(want, got.(proto.Message))
  926. default:
  927. ok = want == got
  928. }
  929. if !ok {
  930. t.Errorf("wrong response %q, want %q)", got, want)
  931. }
  932. }
  933. func TestFirestoreListCollectionIdsError(t *testing.T) {
  934. errCode := codes.PermissionDenied
  935. mockFirestore.err = gstatus.Error(errCode, "test error")
  936. var formattedParent string = fmt.Sprintf("projects/%s/databases/%s/documents/%s/%s", "[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]")
  937. var request = &firestorepb.ListCollectionIdsRequest{
  938. Parent: formattedParent,
  939. }
  940. c, err := NewClient(context.Background(), clientOpt)
  941. if err != nil {
  942. t.Fatal(err)
  943. }
  944. resp, err := c.ListCollectionIds(context.Background(), request).Next()
  945. if st, ok := gstatus.FromError(err); !ok {
  946. t.Errorf("got error %v, expected grpc error", err)
  947. } else if c := st.Code(); c != errCode {
  948. t.Errorf("got error code %q, want %q", c, errCode)
  949. }
  950. _ = resp
  951. }