firebase-bolt
Version:
Firebase Bolt Security and Modeling Language Compiler
69 lines (67 loc) • 8.08 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 rest = require("../firebase-rest");
var secrets = require('../../auth-secrets');
var chai_1 = require("chai");
var TEST_LOCATION = '/rest-test';
suite("Firebase REST Tests", function () {
var client = new rest.Client(secrets.APP);
suiteSetup(function () {
var adminClient = new rest.Client(secrets.APP, secrets.SECRET);
return adminClient.put(rest.RULES_LOCATION, {
rules: {
".read": true,
".write": false,
"rest-test": {
".write": true
}
}
});
});
test("Read location", function () {
return client.get(TEST_LOCATION);
});
test("Write data", function () {
var tests = [
{ location: 'string', value: 'Hello, world.' },
{ location: 'integer', value: 123 },
{ location: 'number', value: 123.456 },
{ location: 'boolean', value: false },
{ location: 'object', value: { "this": 1, that: 'other' } },
{ location: 'TIMESTAMP', value: rest.TIMESTAMP },
];
var results = [];
for (var i = 0; i < tests.length; i++) {
var t = tests[i];
results.push(client.put(TEST_LOCATION + '/types/' + t.location, t.value));
}
return Promise.all(results);
});
test("Invalid location", function () {
return client.get('../../illegal')["catch"](function (error) {
return true;
});
});
test("PushID", function () {
var id1 = rest.generatePushID();
var id2 = rest.generatePushID();
chai_1.assert.equal(id1.length, 20);
chai_1.assert.notEqual(id1, id2);
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmlyZWJhc2UtcmVzdC10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCx1Q0FBeUM7QUFDekMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUMsNkJBQTRCO0FBRTVCLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQztBQUVqQyxLQUFLLENBQUMscUJBQXFCLEVBQUU7SUFDM0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxVQUFVLENBQUM7UUFDVCxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsY0FBYyxFQUNuQjtZQUNFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixRQUFRLEVBQUUsS0FBSztnQkFDZixXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLElBQUksS0FBSyxHQUFHO1lBQ1YsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7WUFDOUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDbkMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDdEMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDckMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFDLE1BQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxFQUFFO1lBQ3ZELEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtTQUNqRCxDQUFDO1FBQ0YsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN2QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQy9CLE9BQUssQ0FBQSxDQUFDLFVBQVMsS0FBSztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoQyxhQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsYUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L2ZpcmViYXNlLXJlc3QtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0ICogYXMgcmVzdCBmcm9tICcuLi9maXJlYmFzZS1yZXN0JztcbmxldCBzZWNyZXRzID0gcmVxdWlyZSgnLi4vLi4vYXV0aC1zZWNyZXRzJyk7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnY2hhaSc7XG5cbmxldCBURVNUX0xPQ0FUSU9OID0gJy9yZXN0LXRlc3QnO1xuXG5zdWl0ZShcIkZpcmViYXNlIFJFU1QgVGVzdHNcIiwgZnVuY3Rpb24oKSB7XG4gIHZhciBjbGllbnQgPSBuZXcgcmVzdC5DbGllbnQoc2VjcmV0cy5BUFApO1xuXG4gIHN1aXRlU2V0dXAoZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFkbWluQ2xpZW50ID0gbmV3IHJlc3QuQ2xpZW50KHNlY3JldHMuQVBQLCBzZWNyZXRzLlNFQ1JFVCk7XG4gICAgcmV0dXJuIGFkbWluQ2xpZW50LnB1dChcbiAgICAgIHJlc3QuUlVMRVNfTE9DQVRJT04sXG4gICAgICB7XG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgXCIucmVhZFwiOiB0cnVlLFxuICAgICAgICAgIFwiLndyaXRlXCI6IGZhbHNlLFxuICAgICAgICAgIFwicmVzdC10ZXN0XCI6IHtcbiAgICAgICAgICAgIFwiLndyaXRlXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KFwiUmVhZCBsb2NhdGlvblwiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY2xpZW50LmdldChURVNUX0xPQ0FUSU9OKTtcbiAgfSk7XG5cbiAgdGVzdChcIldyaXRlIGRhdGFcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRlc3RzID0gW1xuICAgICAgeyBsb2NhdGlvbjogJ3N0cmluZycsIHZhbHVlOiAnSGVsbG8sIHdvcmxkLicgfSxcbiAgICAgIHsgbG9jYXRpb246ICdpbnRlZ2VyJywgdmFsdWU6IDEyMyB9LFxuICAgICAgeyBsb2NhdGlvbjogJ251bWJlcicsIHZhbHVlOiAxMjMuNDU2IH0sXG4gICAgICB7IGxvY2F0aW9uOiAnYm9vbGVhbicsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgeyBsb2NhdGlvbjogJ29iamVjdCcsIHZhbHVlOiB7dGhpczogMSwgdGhhdDogJ290aGVyJ30gfSxcbiAgICAgIHsgbG9jYXRpb246ICdUSU1FU1RBTVAnLCB2YWx1ZTogcmVzdC5USU1FU1RBTVAgfSxcbiAgICBdO1xuICAgIHZhciByZXN1bHRzID0gPFByb21pc2U8c3RyaW5nPltdPltdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0ID0gdGVzdHNbaV07XG4gICAgICByZXN1bHRzLnB1c2goY2xpZW50LnB1dChURVNUX0xPQ0FUSU9OICsgJy90eXBlcy8nICsgdC5sb2NhdGlvbiwgdC52YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cyk7XG4gIH0pO1xuXG4gIHRlc3QoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjbGllbnQuZ2V0KCcuLi8uLi9pbGxlZ2FsJylcbiAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KFwiUHVzaElEXCIsIGZ1bmN0aW9uKCkge1xuICAgIGxldCBpZDEgPSByZXN0LmdlbmVyYXRlUHVzaElEKCk7XG4gICAgbGV0IGlkMiA9IHJlc3QuZ2VuZXJhdGVQdXNoSUQoKTtcbiAgICBhc3NlcnQuZXF1YWwoaWQxLmxlbmd0aCwgMjApO1xuICAgIGFzc2VydC5ub3RFcXVhbChpZDEsIGlkMik7XG4gIH0pO1xufSk7XG4iXX0=