| // Copyright 2019 Google LLC. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| // Tests for firestore clients. |
| |
| syntax = "proto3"; |
| |
| package google.cloud.conformance.firestore.v1; |
| |
| option php_namespace = "Google\\Cloud\\Firestore\\Tests\\Conformance"; |
| option csharp_namespace = "Google.Cloud.Firestore.Tests.Proto"; |
| option java_outer_classname = "TestDefinition"; |
| option java_package = "com.google.cloud.conformance.firestore.v1"; |
| |
| import "google/firestore/v1/common.proto"; |
| import "google/firestore/v1/document.proto"; |
| import "google/firestore/v1/firestore.proto"; |
| import "google/firestore/v1/query.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| // A collection of tests. |
| message TestFile { |
| repeated Test tests = 1; |
| } |
| |
| // A Test describes a single client method call and its expected result. |
| message Test { |
| string description = 1; // short description of the test |
| string comment = 10; // a comment describing the behavior being tested |
| |
| oneof test { |
| GetTest get = 2; |
| CreateTest create = 3; |
| SetTest set = 4; |
| UpdateTest update = 5; |
| UpdatePathsTest update_paths = 6; |
| DeleteTest delete = 7; |
| QueryTest query = 8; |
| ListenTest listen = 9; |
| } |
| } |
| |
| // Call to the DocumentRef.Get method. |
| message GetTest { |
| // The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d" |
| string doc_ref_path = 1; |
| |
| // The request that the call should send to the Firestore service. |
| google.firestore.v1.GetDocumentRequest request = 2; |
| } |
| |
| // Call to DocumentRef.Create. |
| message CreateTest { |
| // The path of the doc, e.g. "projects/projectID/databases/(default)/documents/C/d" |
| string doc_ref_path = 1; |
| |
| // The data passed to Create, as JSON. The strings "Delete" and "ServerTimestamp" |
| // denote the two special sentinel values. Values that could be interpreted as integers |
| // (i.e. digit strings) should be treated as integers. |
| string json_data = 2; |
| |
| // The request that the call should generate. |
| google.firestore.v1.CommitRequest request = 3; |
| |
| // If true, the call should result in an error without generating a request. |
| // If this is true, request should not be set. |
| bool is_error = 4; |
| } |
| |
| // A call to DocumentRef.Set. |
| message SetTest { |
| string doc_ref_path = 1; // path of doc |
| SetOption option = 2; // option to the Set call, if any |
| string json_data = 3; // data (see CreateTest.json_data) |
| google.firestore.v1.CommitRequest request = 4; // expected request |
| bool is_error = 5; // call signals an error |
| } |
| |
| // A call to the form of DocumentRef.Update that represents the data as a map |
| // or dictionary. |
| message UpdateTest { |
| string doc_ref_path = 1; // path of doc |
| google.firestore.v1.Precondition precondition = 2; // precondition in call, if any |
| string json_data = 3; // data (see CreateTest.json_data) |
| google.firestore.v1.CommitRequest request = 4; // expected request |
| bool is_error = 5; // call signals an error |
| } |
| |
| // A call to the form of DocumentRef.Update that represents the data as a list |
| // of field paths and their values. |
| message UpdatePathsTest { |
| string doc_ref_path = 1; // path of doc |
| google.firestore.v1.Precondition precondition = 2; // precondition in call, if any |
| // parallel sequences: field_paths[i] corresponds to json_values[i] |
| repeated FieldPath field_paths = 3; // the argument field paths |
| repeated string json_values = 4; // the argument values, as JSON |
| google.firestore.v1.CommitRequest request = 5; // expected rquest |
| bool is_error = 6; // call signals an error |
| } |
| |
| // A call to DocmentRef.Delete |
| message DeleteTest { |
| string doc_ref_path = 1; // path of doc |
| google.firestore.v1.Precondition precondition = 2; |
| google.firestore.v1.CommitRequest request = 3; // expected rquest |
| bool is_error = 4; // call signals an error |
| } |
| |
| // An option to the DocumentRef.Set call. |
| message SetOption { |
| bool all = 1; // if true, merge all fields ("fields" is ignored). |
| repeated FieldPath fields = 2; // field paths for a Merge option |
| } |
| |
| message QueryTest { |
| string coll_path = 1; // path of collection, e.g. "projects/projectID/databases/(default)/documents/C" |
| repeated Clause clauses = 2; |
| google.firestore.v1.StructuredQuery query = 3; |
| bool is_error = 4; |
| } |
| |
| message Clause { |
| oneof clause { |
| Select select = 1; |
| Where where = 2; |
| OrderBy order_by = 3; |
| int32 offset = 4; |
| int32 limit = 5; |
| Cursor start_at = 6; |
| Cursor start_after = 7; |
| Cursor end_at = 8; |
| Cursor end_before = 9; |
| } |
| } |
| |
| message Select { |
| repeated FieldPath fields = 1; |
| } |
| |
| message Where { |
| FieldPath path = 1; |
| string op = 2; |
| string json_value = 3; |
| } |
| |
| message OrderBy { |
| FieldPath path = 1; |
| string direction = 2; // "asc" or "desc" |
| } |
| |
| message Cursor { |
| // one of: |
| DocSnapshot doc_snapshot = 1; |
| repeated string json_values = 2; |
| } |
| |
| message DocSnapshot { |
| string path = 1; |
| string json_data = 2; |
| } |
| |
| message FieldPath { |
| repeated string field = 1; |
| } |
| |
| // A test of the Listen streaming RPC (a.k.a. FireStore watch). |
| // If the sequence of responses is provided to the implementation, |
| // it should produce the sequence of snapshots. |
| // If is_error is true, an error should occur after the snapshots. |
| // |
| // The tests assume that the query is |
| // Collection("projects/projectID/databases/(default)/documents/C").OrderBy("a", Ascending) |
| // |
| // The watch target ID used in these tests is 1. Test interpreters |
| // should either change their client's ID for testing, |
| // or change the ID in the tests before running them. |
| message ListenTest { |
| repeated google.firestore.v1.ListenResponse responses = 1; |
| repeated Snapshot snapshots = 2; |
| bool is_error = 3; |
| } |
| |
| message Snapshot { |
| repeated google.firestore.v1.Document docs = 1; |
| repeated DocChange changes = 2; |
| google.protobuf.Timestamp read_time = 3; |
| } |
| |
| message DocChange { |
| enum Kind { |
| KIND_UNSPECIFIED = 0; |
| ADDED = 1; |
| REMOVED = 2; |
| MODIFIED = 3; |
| } |
| |
| Kind kind = 1; |
| google.firestore.v1.Document doc = 2; |
| int32 old_index = 3; |
| int32 new_index = 4; |
| } |