firebase-bolt
Version:
Firebase Bolt Security and Modeling Language Compiler
101 lines (99 loc) • 10.9 kB
JavaScript
;
exports.__esModule = true;
/*
* Copyright 2016 Google Inc. All Rights Reserved.
*
* 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.
*/
var simulator_1 = require("../simulator");
var secrets = require('../../auth-secrets');
simulator_1.rulesSuite("Type[] | Scalar - issue 118", function (test) {
test.database(secrets.APP, secrets.SECRET);
test.rules('samples/issue-118');
test("Scalar tests.", function (rules) {
rules
// .debug()
.as('mike')
.at('/path/scalar')
.write(1)
.succeeds("Write to scalar.")
.write(null)
.succeeds("Deleting whole item can delete scalar.")
// Needed for all subsequent tests to pass.
.write(1)
.at('/path/scalarOrNull')
.write(1)
.succeeds("Write to scalar or null.")
.write(null)
.succeeds("Can delete scalar or null.");
});
test("Array tests.", function (rules) {
rules
// .debug()
.as('mike')
.at('/path/scalar')
.write(1)
.at('/path/array')
.write([1])
.succeeds("Write to array.")
.write(null)
.succeeds("Deleting whole array.")
.at('/path/array/999')
.write(1)
.succeeds("Write single entry to array.")
.at('/path/array')
.push(2)
.succeeds("Pushes value into array.")
.write("bogus")
.fails("Should not be able to write non-array to array.")
.at('/path/arrayOrNull/999')
.write(1)
.succeeds("Can write single array entry to array or null.")
.at('/path/arrayOrNull')
.write([1])
.succeeds("Write array to array or null.")
.write(null)
.succeeds("Can delete array or null.")
.at('/path/arrayOrScalar')
.write(1)
.succeeds("Write scalar to array or scalar.")
.write([1])
.succeeds("Write array to array or scalar.");
});
test("Map tests.", function (rules) {
rules
// .debug()
.as('mike')
.at('/path/scalar')
.write(1)
.at('/path/map')
.write([1])
.succeeds("Write to map.")
.write(null)
.succeeds("Deleting whole map.")
.at('/path/map/key')
.write(1)
.succeeds("Write single entry to map.")
.at('/path/map')
.push(2)
.succeeds("Pushes value into map.")
.write("bogus")
.fails("Should not be able to write non-map to map.")
.at('/path/mapOrScalar')
.write(1)
.succeeds("Write scalar to map or scalar.")
.write({ "key": 2 })
.succeeds("Write map to map or scalar.");
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,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UUFBUSxDQUFDLGVBQWUsQ0FBQzthQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLHFCQUFxQixDQUFDO2FBQy9CLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDbkIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQzthQUN0QyxFQUFFLENBQUMsV0FBVyxDQUFDO2FBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNQLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQzthQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ2QsS0FBSyxDQUFDLDZDQUE2QyxDQUFDO2FBRXBELEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUN2QixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ1IsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO2FBQzFDLEtBQUssQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUNqQixRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FDekM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvaXNzdWUtMTE4LXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7cnVsZXNTdWl0ZX0gZnJvbSAnLi4vc2ltdWxhdG9yJztcbnZhciBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5cbnJ1bGVzU3VpdGUoXCJUeXBlW10gfCBTY2FsYXIgLSBpc3N1ZSAxMThcIiwgZnVuY3Rpb24odGVzdCkge1xuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvaXNzdWUtMTE4Jyk7XG5cbiAgdGVzdChcIlNjYWxhciB0ZXN0cy5cIiwgZnVuY3Rpb24ocnVsZXMpIHtcbiAgICBydWxlc1xuICAgICAgLy8gLmRlYnVnKClcbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAuYXQoJy9wYXRoL3NjYWxhcicpXG4gICAgICAud3JpdGUoMSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIHNjYWxhci5cIilcbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLnN1Y2NlZWRzKFwiRGVsZXRpbmcgd2hvbGUgaXRlbSBjYW4gZGVsZXRlIHNjYWxhci5cIilcblxuICAgICAgLy8gTmVlZGVkIGZvciBhbGwgc3Vic2VxdWVudCB0ZXN0cyB0byBwYXNzLlxuICAgICAgLndyaXRlKDEpXG5cbiAgICAgIC5hdCgnL3BhdGgvc2NhbGFyT3JOdWxsJylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgdG8gc2NhbGFyIG9yIG51bGwuXCIpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkNhbiBkZWxldGUgc2NhbGFyIG9yIG51bGwuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiQXJyYXkgdGVzdHMuXCIsIGZ1bmN0aW9uKHJ1bGVzKSB7XG4gICAgcnVsZXNcbiAgICAgIC8vIC5kZWJ1ZygpXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLmF0KCcvcGF0aC9zY2FsYXInKVxuICAgICAgLndyaXRlKDEpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXknKVxuICAgICAgLndyaXRlKFsxXSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIHRvIGFycmF5LlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJEZWxldGluZyB3aG9sZSBhcnJheS5cIilcbiAgICAgIC5hdCgnL3BhdGgvYXJyYXkvOTk5JylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2luZ2xlIGVudHJ5IHRvIGFycmF5LlwiKVxuICAgICAgLmF0KCcvcGF0aC9hcnJheScpXG4gICAgICAucHVzaCgyKVxuICAgICAgLnN1Y2NlZWRzKFwiUHVzaGVzIHZhbHVlIGludG8gYXJyYXkuXCIpXG4gICAgICAud3JpdGUoXCJib2d1c1wiKVxuICAgICAgLmZhaWxzKFwiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHdyaXRlIG5vbi1hcnJheSB0byBhcnJheS5cIilcblxuICAgICAgLmF0KCcvcGF0aC9hcnJheU9yTnVsbC85OTknKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJDYW4gd3JpdGUgc2luZ2xlIGFycmF5IGVudHJ5IHRvIGFycmF5IG9yIG51bGwuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvYXJyYXlPck51bGwnKVxuICAgICAgLndyaXRlKFsxXSlcbiAgICAgIC5zdWNjZWVkcyhcIldyaXRlIGFycmF5IHRvIGFycmF5IG9yIG51bGwuXCIpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIkNhbiBkZWxldGUgYXJyYXkgb3IgbnVsbC5cIilcblxuICAgICAgLmF0KCcvcGF0aC9hcnJheU9yU2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgc2NhbGFyIHRvIGFycmF5IG9yIHNjYWxhci5cIilcbiAgICAgIC53cml0ZShbMV0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBhcnJheSB0byBhcnJheSBvciBzY2FsYXIuXCIpXG4gICAgO1xuICB9KTtcblxuICB0ZXN0KFwiTWFwIHRlc3RzLlwiLCBmdW5jdGlvbihydWxlcykge1xuICAgIHJ1bGVzXG4gICAgICAvLyAuZGVidWcoKVxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC5hdCgnL3BhdGgvc2NhbGFyJylcbiAgICAgIC53cml0ZSgxKVxuXG4gICAgICAuYXQoJy9wYXRoL21hcCcpXG4gICAgICAud3JpdGUoWzFdKVxuICAgICAgLnN1Y2NlZWRzKFwiV3JpdGUgdG8gbWFwLlwiKVxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJEZWxldGluZyB3aG9sZSBtYXAuXCIpXG4gICAgICAuYXQoJy9wYXRoL21hcC9rZXknKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBzaW5nbGUgZW50cnkgdG8gbWFwLlwiKVxuICAgICAgLmF0KCcvcGF0aC9tYXAnKVxuICAgICAgLnB1c2goMilcbiAgICAgIC5zdWNjZWVkcyhcIlB1c2hlcyB2YWx1ZSBpbnRvIG1hcC5cIilcbiAgICAgIC53cml0ZShcImJvZ3VzXCIpXG4gICAgICAuZmFpbHMoXCJTaG91bGQgbm90IGJlIGFibGUgdG8gd3JpdGUgbm9uLW1hcCB0byBtYXAuXCIpXG5cbiAgICAgIC5hdCgnL3BhdGgvbWFwT3JTY2FsYXInKVxuICAgICAgLndyaXRlKDEpXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBzY2FsYXIgdG8gbWFwIG9yIHNjYWxhci5cIilcbiAgICAgIC53cml0ZSh7XCJrZXlcIjogMn0pXG4gICAgICAuc3VjY2VlZHMoXCJXcml0ZSBtYXAgdG8gbWFwIG9yIHNjYWxhci5cIilcbiAgICA7XG4gIH0pO1xufSk7XG4iXX0=