firebase-bolt
Version:
Firebase Bolt Security and Modeling Language Compiler
102 lines (100 loc) • 11 kB
JavaScript
;
exports.__esModule = true;
/*
* Copyright 2015 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("Create, Update, and Delete", function (test) {
test.database(secrets.APP, secrets.SECRET);
test.rules('samples/create-update-delete');
var uid = test.uid;
test("Create", function (rules) {
rules
.at('/docs/' + uid('mike') + '/create')
.write('created')
.succeeds("Anyone can create.")
.write('updated')
.fails("No-one can update.")
.write(null)
.fails("No-one can delete.")
.as('mike')
.write('owner-updated')
.fails("Owner can't update.")
.write(null)
.fails("Owner can't delete.");
});
test("Update", function (rules) {
rules
.at('/docs/' + uid('mike') + '/update')
.as('mike')
.write('created')
.fails("Owner can't create.")
.as('admin')
.write('created')
.succeeds("Admin can create.")
.as('anon')
.write('updated')
.succeeds("Anyone can update.")
.write(null)
.fails("No-one can delete.")
.as('mike')
.write('owner-updated')
.succeeds("Owner can update.")
.write(null)
.fails("Owner can't delete.");
});
test("Delete", function (rules) {
rules
.at('/docs/' + uid('mike') + '/delete')
.as('admin')
.write('created')
.succeeds("Admin can create.")
.as('anon')
.write('updated')
.fails("Anyone can't update.")
.write(null)
.succeeds("Anyone can delete.")
.as('mike')
.write('owner-created')
.fails("Owner can't create.")
.as('admin')
.write('created')
.as('mike')
.write('owner-updated')
.fails("Owner can't update.")
.write(null)
.succeeds("Owner can delete.");
});
test("Owner Create and Delete", function (rules) {
rules
.at('/docs/' + uid('mike') + '/owner-create-delete')
.as('anon')
.write('created')
.fails("Anyone can't create.")
.as('mike')
.write('created')
.succeeds("Owner can create.")
.as('anon')
.write('updated')
.succeeds("Anyone can update.")
.write(null)
.fails("Anyone can't delete.")
.as('mike')
.write(null)
.succeeds("Owner can delete.");
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvY3JlYXRlLXVwZGF0ZS1kZWxldGUtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsMENBQXdDO0FBQ3hDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTVDLHNCQUFVLENBQUMsNEJBQTRCLEVBQUUsVUFBUyxJQUFJO0lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFFbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFDLEtBQUs7UUFDbkIsS0FBSzthQUNGLEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQzthQUN0QyxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQzthQUU5QixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzthQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLG9CQUFvQixDQUFDO2FBRTNCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQzlCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQUMsS0FBSztRQUNuQixLQUFLO2FBQ0YsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO2FBQ3RDLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsbUJBQW1CLENBQUM7YUFFN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUVWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMsb0JBQW9CLENBQUM7YUFFM0IsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDdEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FDOUI7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBQyxLQUFLO1FBQ25CLEtBQUs7YUFDRixFQUFFLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7YUFDdEMsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNYLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFFVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQzthQUU3QixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsUUFBUSxDQUFDLG9CQUFvQixDQUFDO2FBRTlCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsZUFBZSxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzthQUU1QixFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUVoQixFQUFFLENBQUMsTUFBTSxDQUFDO2FBRVYsS0FBSyxDQUFDLGVBQWUsQ0FBQzthQUN0QixLQUFLLENBQUMscUJBQXFCLENBQUM7YUFFNUIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUMvQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFVBQUMsS0FBSztRQUNwQyxLQUFLO2FBQ0YsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsc0JBQXNCLENBQUM7YUFDbkQsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNWLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDaEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDO2FBRTdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBRVYsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFFOUIsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQzthQUU3QixFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUMvQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9jcmVhdGUtdXBkYXRlLWRlbGV0ZS10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge3J1bGVzU3VpdGV9IGZyb20gJy4uL3NpbXVsYXRvcic7XG52YXIgc2VjcmV0cyA9IHJlcXVpcmUoJy4uLy4uL2F1dGgtc2VjcmV0cycpO1xuXG5ydWxlc1N1aXRlKFwiQ3JlYXRlLCBVcGRhdGUsIGFuZCBEZWxldGVcIiwgZnVuY3Rpb24odGVzdCkge1xuICB0ZXN0LmRhdGFiYXNlKHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gIHRlc3QucnVsZXMoJ3NhbXBsZXMvY3JlYXRlLXVwZGF0ZS1kZWxldGUnKTtcbiAgdmFyIHVpZCA9IHRlc3QudWlkO1xuXG4gIHRlc3QoXCJDcmVhdGVcIiwgKHJ1bGVzKSA9PiB7XG4gICAgcnVsZXNcbiAgICAgIC5hdCgnL2RvY3MvJyArIHVpZCgnbWlrZScpICsgJy9jcmVhdGUnKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLmZhaWxzKFwiTm8tb25lIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiTm8tb25lIGNhbiBkZWxldGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG5cbiAgICAgIC53cml0ZSgnb3duZXItdXBkYXRlZCcpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIlVwZGF0ZVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9jcy8nICsgdWlkKCdtaWtlJykgKyAnL3VwZGF0ZScpXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhZG1pbicpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiQWRtaW4gY2FuIGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhbm9uJylcblxuICAgICAgLndyaXRlKCd1cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIk5vLW9uZSBjYW4gZGVsZXRlLlwiKVxuXG4gICAgICAuYXMoJ21pa2UnKVxuICAgICAgLndyaXRlKCdvd25lci11cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiB1cGRhdGUuXCIpXG5cbiAgICAgIC53cml0ZShudWxsKVxuICAgICAgLmZhaWxzKFwiT3duZXIgY2FuJ3QgZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIkRlbGV0ZVwiLCAocnVsZXMpID0+IHtcbiAgICBydWxlc1xuICAgICAgLmF0KCcvZG9jcy8nICsgdWlkKCdtaWtlJykgKyAnL2RlbGV0ZScpXG4gICAgICAuYXMoJ2FkbWluJylcbiAgICAgIC53cml0ZSgnY3JlYXRlZCcpXG4gICAgICAuc3VjY2VlZHMoXCJBZG1pbiBjYW4gY3JlYXRlLlwiKVxuXG4gICAgICAuYXMoJ2Fub24nKVxuXG4gICAgICAud3JpdGUoJ3VwZGF0ZWQnKVxuICAgICAgLmZhaWxzKFwiQW55b25lIGNhbid0IHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJBbnlvbmUgY2FuIGRlbGV0ZS5cIilcblxuICAgICAgLmFzKCdtaWtlJylcbiAgICAgIC53cml0ZSgnb3duZXItY3JlYXRlZCcpXG4gICAgICAuZmFpbHMoXCJPd25lciBjYW4ndCBjcmVhdGUuXCIpXG5cbiAgICAgIC5hcygnYWRtaW4nKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcblxuICAgICAgLmFzKCdtaWtlJylcblxuICAgICAgLndyaXRlKCdvd25lci11cGRhdGVkJylcbiAgICAgIC5mYWlscyhcIk93bmVyIGNhbid0IHVwZGF0ZS5cIilcblxuICAgICAgLndyaXRlKG51bGwpXG4gICAgICAuc3VjY2VlZHMoXCJPd25lciBjYW4gZGVsZXRlLlwiKVxuICAgIDtcbiAgfSk7XG5cbiAgdGVzdChcIk93bmVyIENyZWF0ZSBhbmQgRGVsZXRlXCIsIChydWxlcykgPT4ge1xuICAgIHJ1bGVzXG4gICAgICAuYXQoJy9kb2NzLycgKyB1aWQoJ21pa2UnKSArICcvb3duZXItY3JlYXRlLWRlbGV0ZScpXG4gICAgICAuYXMoJ2Fub24nKVxuICAgICAgLndyaXRlKCdjcmVhdGVkJylcbiAgICAgIC5mYWlscyhcIkFueW9uZSBjYW4ndCBjcmVhdGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUoJ2NyZWF0ZWQnKVxuICAgICAgLnN1Y2NlZWRzKFwiT3duZXIgY2FuIGNyZWF0ZS5cIilcblxuICAgICAgLmFzKCdhbm9uJylcblxuICAgICAgLndyaXRlKCd1cGRhdGVkJylcbiAgICAgIC5zdWNjZWVkcyhcIkFueW9uZSBjYW4gdXBkYXRlLlwiKVxuXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5mYWlscyhcIkFueW9uZSBjYW4ndCBkZWxldGUuXCIpXG5cbiAgICAgIC5hcygnbWlrZScpXG4gICAgICAud3JpdGUobnVsbClcbiAgICAgIC5zdWNjZWVkcyhcIk93bmVyIGNhbiBkZWxldGUuXCIpXG4gICAgO1xuICB9KTtcbn0pO1xuIl19