UNPKG

firebase-bolt

Version:

Firebase Bolt Security and Modeling Language Compiler

102 lines (100 loc) 11 kB
"use strict"; 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