Home | History | Annotate | Download | only in dyn
      1 <html><body>
      2 <style>
      3 
      4 body, h1, h2, h3, div, span, p, pre, a {
      5   margin: 0;
      6   padding: 0;
      7   border: 0;
      8   font-weight: inherit;
      9   font-style: inherit;
     10   font-size: 100%;
     11   font-family: inherit;
     12   vertical-align: baseline;
     13 }
     14 
     15 body {
     16   font-size: 13px;
     17   padding: 1em;
     18 }
     19 
     20 h1 {
     21   font-size: 26px;
     22   margin-bottom: 1em;
     23 }
     24 
     25 h2 {
     26   font-size: 24px;
     27   margin-bottom: 1em;
     28 }
     29 
     30 h3 {
     31   font-size: 20px;
     32   margin-bottom: 1em;
     33   margin-top: 1em;
     34 }
     35 
     36 pre, code {
     37   line-height: 1.5;
     38   font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
     39 }
     40 
     41 pre {
     42   margin-top: 0.5em;
     43 }
     44 
     45 h1, h2, h3, p {
     46   font-family: Arial, sans serif;
     47 }
     48 
     49 h1, h2, h3 {
     50   border-bottom: solid #CCC 1px;
     51 }
     52 
     53 .toc_element {
     54   margin-top: 0.5em;
     55 }
     56 
     57 .firstline {
     58   margin-left: 2 em;
     59 }
     60 
     61 .method  {
     62   margin-top: 1em;
     63   border: solid 1px #CCC;
     64   padding: 1em;
     65   background: #EEE;
     66 }
     67 
     68 .details {
     69   font-weight: bold;
     70   font-size: 14px;
     71 }
     72 
     73 </style>
     74 
     75 <h1><a href="firebaserules_v1.html">Firebase Rules API</a> . <a href="firebaserules_v1.projects.html">projects</a></h1>
     76 <h2>Instance Methods</h2>
     77 <p class="toc_element">
     78   <code><a href="firebaserules_v1.projects.releases.html">releases()</a></code>
     79 </p>
     80 <p class="firstline">Returns the releases Resource.</p>
     81 
     82 <p class="toc_element">
     83   <code><a href="firebaserules_v1.projects.rulesets.html">rulesets()</a></code>
     84 </p>
     85 <p class="firstline">Returns the rulesets Resource.</p>
     86 
     87 <p class="toc_element">
     88   <code><a href="#test">test(name, body, x__xgafv=None)</a></code></p>
     89 <p class="firstline">Test `Source` for syntactic and semantic correctness. Issues present, if</p>
     90 <h3>Method Details</h3>
     91 <div class="method">
     92     <code class="details" id="test">test(name, body, x__xgafv=None)</code>
     93   <pre>Test `Source` for syntactic and semantic correctness. Issues present, if
     94 any, will be returned to the caller with a description, severity, and
     95 source location.
     96 
     97 The test method may be executed with `Source` or a `Ruleset` name.
     98 Passing `Source` is useful for unit testing new rules. Passing a `Ruleset`
     99 name is useful for regression testing an existing rule.
    100 
    101 The following is an example of `Source` that permits users to upload images
    102 to a bucket bearing their user id and matching the correct metadata:
    103 
    104 _*Example*_
    105 
    106     // Users are allowed to subscribe and unsubscribe to the blog.
    107     service firebase.storage {
    108       match /users/{userId}/images/{imageName} {
    109           allow write: if userId == request.auth.uid
    110               && (imageName.matches('*.png$')
    111               || imageName.matches('*.jpg$'))
    112               && resource.mimeType.matches('^image/')
    113       }
    114     }
    115 
    116 Args:
    117   name: string, Tests may either provide `source` or a `Ruleset` resource name.
    118 
    119 For tests against `source`, the resource name must refer to the project:
    120 Format: `projects/{project_id}`
    121 
    122 For tests against a `Ruleset`, this must be the `Ruleset` resource name:
    123 Format: `projects/{project_id}/rulesets/{ruleset_id}` (required)
    124   body: object, The request body. (required)
    125     The object takes the form of:
    126 
    127 { # The request for FirebaseRulesService.TestRuleset.
    128     "source": { # `Source` is one or more `File` messages comprising a logical set of rules. # Optional `Source` to be checked for correctness.
    129         # 
    130         # This field must not be set when the resource name refers to a `Ruleset`.
    131       "files": [ # `File` set constituting the `Source` bundle.
    132         { # `File` containing source content.
    133           "content": "A String", # Textual Content.
    134           "name": "A String", # File name.
    135           "fingerprint": "A String", # Fingerprint (e.g. github sha) associated with the `File`.
    136         },
    137       ],
    138     },
    139     "testSuite": { # `TestSuite` is a collection of `TestCase` instances that validate the logical # Inline `TestSuite` to run.
    140         # correctness of a `Ruleset`. The `TestSuite` may be referenced in-line within
    141         # a `TestRuleset` invocation or as part of a `Release` object as a pre-release
    142         # check.
    143       "testCases": [ # Collection of test cases associated with the `TestSuite`.
    144         { # `TestCase` messages provide the request context and an expectation as to
    145             # whether the given context will be allowed or denied. Test cases may specify
    146             # the `request`, `resource`, and `function_mocks` to mock a function call to
    147             # a service-provided function.
    148             #
    149             # The `request` object represents context present at request-time.
    150             #
    151             # The `resource` is the value of the target resource as it appears in
    152             # persistent storage before the request is executed.
    153           "functionMocks": [ # Optional function mocks for service-defined functions. If not set, any
    154               # service defined function is expected to return an error, which may or may
    155               # not influence the test outcome.
    156             { # Mock function definition.
    157                 #
    158                 # Mocks must refer to a function declared by the target service. The type of
    159                 # the function args and result will be inferred at test time. If either the
    160                 # arg or result values are not compatible with function type declaration, the
    161                 # request will be considered invalid.
    162                 #
    163                 # More than one `FunctionMock` may be provided for a given function name so
    164                 # long as the `Arg` matchers are distinct. There may be only one function
    165                 # for a given overload where all `Arg` values are `Arg.any_value`.
    166               "function": "A String", # The name of the function.
    167                   #
    168                   # The function name must match one provided by a service declaration.
    169               "args": [ # The list of `Arg` values to match. The order in which the arguments are
    170                   # provided is the order in which they must appear in the function
    171                   # invocation.
    172                 { # Arg matchers for the mock function.
    173                   "anyValue": { # A generic empty message that you can re-use to avoid defining duplicated # Argument matches any value provided.
    174                       # empty messages in your APIs. A typical example is to use it as the request
    175                       # or the response type of an API method. For instance:
    176                       #
    177                       #     service Foo {
    178                       #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
    179                       #     }
    180                       #
    181                       # The JSON representation for `Empty` is empty JSON object `{}`.
    182                   },
    183                   "exactValue": "", # Argument exactly matches value provided.
    184                 },
    185               ],
    186               "result": { # Possible result values from the function mock invocation. # The mock result of the function call.
    187                 "undefined": { # A generic empty message that you can re-use to avoid defining duplicated # The result is undefined, meaning the result could not be computed.
    188                     # empty messages in your APIs. A typical example is to use it as the request
    189                     # or the response type of an API method. For instance:
    190                     #
    191                     #     service Foo {
    192                     #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
    193                     #     }
    194                     #
    195                     # The JSON representation for `Empty` is empty JSON object `{}`.
    196                 },
    197                 "value": "", # The result is an actual value. The type of the value must match that
    198                     # of the type declared by the service.
    199               },
    200             },
    201           ],
    202           "resource": "", # Optional resource value as it appears in persistent storage before the
    203               # request is fulfilled.
    204               #
    205               # The resource type depends on the `request.path` value.
    206           "request": "", # Request context.
    207               #
    208               # The exact format of the request context is service-dependent. See the
    209               # appropriate service documentation for information about the supported
    210               # fields and types on the request. Minimally, all services support the
    211               # following fields and types:
    212               #
    213               # Request field  | Type
    214               # ---------------|-----------------
    215               # auth.uid       | `string`
    216               # auth.token     | `map<string, string>`
    217               # headers        | `map<string, string>`
    218               # method         | `string`
    219               # params         | `map<string, string>`
    220               # path           | `string`
    221               # time           | `google.protobuf.Timestamp`
    222               #
    223               # If the request value is not well-formed for the service, the request will
    224               # be rejected as an invalid argument.
    225           "expectation": "A String", # Test expectation.
    226         },
    227       ],
    228     },
    229   }
    230 
    231   x__xgafv: string, V1 error format.
    232     Allowed values
    233       1 - v1 error format
    234       2 - v2 error format
    235 
    236 Returns:
    237   An object of the form:
    238 
    239     { # The response for FirebaseRulesService.TestRuleset.
    240     "testResults": [ # The set of test results given the test cases in the `TestSuite`.
    241         # The results will appear in the same order as the test cases appear in the
    242         # `TestSuite`.
    243       { # Test result message containing the state of the test as well as a
    244           # description and source position for test failures.
    245         "debugMessages": [ # Debug messages related to test execution issues encountered during
    246             # evaluation.
    247             #
    248             # Debug messages may be related to too many or too few invocations of
    249             # function mocks or to runtime errors that occur during evaluation.
    250             #
    251             # For example: ```Unable to read variable [name: "resource"]```
    252           "A String",
    253         ],
    254         "state": "A String", # State of the test.
    255         "errorPosition": { # Position in the `Source` content including its line, column number, and an # Position in the `Source` or `Ruleset` where the principle runtime error
    256             # occurs.
    257             #
    258             # Evaluation of an expression may result in an error. Rules are deny by
    259             # default, so a `DENY` expectation when an error is generated is valid.
    260             # When there is a `DENY` with an error, the `SourcePosition` is returned.
    261             #
    262             # E.g. `error_position { line: 19 column: 37 }`
    263             # index of the `File` in the `Source` message. Used for debug purposes.
    264           "column": 42, # First column on the source line associated with the source fragment.
    265           "line": 42, # Line number of the source fragment. 1-based.
    266           "fileName": "A String", # Name of the `File`.
    267         },
    268         "functionCalls": [ # The set of function calls made to service-defined methods.
    269             #
    270             # Function calls are included in the order in which they are encountered
    271             # during evaluation, are provided for both mocked and unmocked functions,
    272             # and included on the response regardless of the test `state`.
    273           { # Represents a service-defined function call that was invoked during test
    274               # execution.
    275             "function": "A String", # Name of the function invoked.
    276             "args": [ # The arguments that were provided to the function.
    277               "",
    278             ],
    279           },
    280         ],
    281       },
    282     ],
    283     "issues": [ # Syntactic and semantic `Source` issues of varying severity. Issues of
    284         # `ERROR` severity will prevent tests from executing.
    285       { # Issues include warnings, errors, and deprecation notices.
    286         "sourcePosition": { # Position in the `Source` content including its line, column number, and an # Position of the issue in the `Source`.
    287             # index of the `File` in the `Source` message. Used for debug purposes.
    288           "column": 42, # First column on the source line associated with the source fragment.
    289           "line": 42, # Line number of the source fragment. 1-based.
    290           "fileName": "A String", # Name of the `File`.
    291         },
    292         "description": "A String", # Short error description.
    293         "severity": "A String", # The severity of the issue.
    294       },
    295     ],
    296   }</pre>
    297 </div>
    298 
    299 </body></html>