UNPKG

firebase-bolt

Version:

Firebase Bolt Security and Modeling Language Compiler

93 lines (91 loc) 12.1 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 chai_1 = require("chai"); var helper = require("./test-helper"); var proc = require("child_process"); var fs = require("fs"); var TMP_DIR = 'tmp/'; suite("firebase-bolt CLI", function () { suiteSetup(function () { try { fs.mkdirSync(TMP_DIR); } catch (e) { // do nothing } }); var tests = [ // Simple options tests. { data: "--help", expect: { out: /^$/, err: /helpful message/ } }, { data: "--h", expect: { out: /^$/, err: /helpful message/ } }, { data: "--version", expect: { out: /^Firebase Bolt v\d+\.\d+\.\d+\n$/, err: /^$/ } }, { data: "--v", expect: { out: /^Firebase Bolt v\d+\.\d+\.\d+\n$/, err: /^$/ } }, // Reading from stdin { label: "stdin -> stdout", data: { stdin: "path / is String;" }, expect: { out: /newData\.isString/, err: /^$/ } }, { label: "stdin -> file", data: { stdin: "path / is String;", args: "--o " + TMP_DIR + "test" }, expect: { out: /^$/, err: new RegExp("^bolt: Generating " + TMP_DIR + "test") } }, // Reading from a file { data: "samples/all_access", expect: { out: /^$/, err: /^bolt: Generating samples\/all_access.json\.\.\.\n$/ } }, { data: "samples/all_access.bolt", expect: { out: /^$/, err: /^bolt: Generating samples\/all_access.json\.\.\.\n$/ } }, { data: "samples/all_access --output " + TMP_DIR + "all_access", expect: { out: /^$/, err: new RegExp("^bolt: Generating " + TMP_DIR + "all_access.json\\.\\.\\.\\n$") } }, { data: "samples/all_access.json", expect: { out: /^$/, err: /bolt: Cannot overwrite/ } }, // Argument errors { data: "--output", expect: { out: /^$/, err: /^bolt: Missing output file name/ } }, { data: "nosuchfile", expect: { out: /^$/, err: /bolt: Could not read file: nosuchfile.bolt/ } }, { data: "two files", expect: { out: /^$/, err: /bolt: Can only compile a single file/ } }, ]; helper.dataDrivenTest(tests, function (data, expect) { return new Promise(function (resolve, reject) { var args; if (typeof (data) === 'string') { args = data; } else { args = data.args || ''; } var child = proc.exec('bin/firebase-bolt ' + args, function (error, stdout, stderr) { if (expect.err) { chai_1.assert.isTrue(expect.err.test(stderr), "Unexpected message: '" + stderr + "'"); } if (expect.out) { chai_1.assert.isTrue(expect.out.test(stdout), "Unexpected output: '" + stdout + "'"); } resolve(); }); if (data.stdin) { child.stdin.write(data.stdin); child.stdin.end(); } }); }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC9jbGktdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHthc3NlcnR9IGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgaGVscGVyIGZyb20gJy4vdGVzdC1oZWxwZXInO1xuaW1wb3J0ICogYXMgcHJvYyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcblxudmFyIFRNUF9ESVIgPSAndG1wLyc7XG5cbnN1aXRlKFwiZmlyZWJhc2UtYm9sdCBDTElcIiwgZnVuY3Rpb24oKSB7XG4gIHN1aXRlU2V0dXAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBmcy5ta2RpclN5bmMoVE1QX0RJUik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHRlc3RzID0gW1xuICAgIC8vIFNpbXBsZSBvcHRpb25zIHRlc3RzLlxuICAgIHsgZGF0YTogXCItLWhlbHBcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvaGVscGZ1bCBtZXNzYWdlL30gfSxcbiAgICB7IGRhdGE6IFwiLS1oXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL2hlbHBmdWwgbWVzc2FnZS99IH0sXG4gICAgeyBkYXRhOiBcIi0tdmVyc2lvblwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXkZpcmViYXNlIEJvbHQgdlxcZCtcXC5cXGQrXFwuXFxkK1xcbiQvLCBlcnI6IC9eJC99IH0sXG4gICAgeyBkYXRhOiBcIi0tdlwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXkZpcmViYXNlIEJvbHQgdlxcZCtcXC5cXGQrXFwuXFxkK1xcbiQvLCBlcnI6IC9eJC99IH0sXG5cbiAgICAvLyBSZWFkaW5nIGZyb20gc3RkaW5cbiAgICB7IGxhYmVsOiBcInN0ZGluIC0+IHN0ZG91dFwiLFxuICAgICAgZGF0YTogeyBzdGRpbjogXCJwYXRoIC8gaXMgU3RyaW5nO1wiIH0sXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9uZXdEYXRhXFwuaXNTdHJpbmcvLCBlcnI6IC9eJC99IH0sXG4gICAgeyBsYWJlbDogXCJzdGRpbiAtPiBmaWxlXCIsXG4gICAgICBkYXRhOiB7IHN0ZGluOiBcInBhdGggLyBpcyBTdHJpbmc7XCIsIGFyZ3M6IFwiLS1vIFwiICsgVE1QX0RJUiArIFwidGVzdFwiIH0sXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogbmV3IFJlZ0V4cChcIl5ib2x0OiBHZW5lcmF0aW5nIFwiICsgVE1QX0RJUiArIFwidGVzdFwiKX0gfSxcblxuICAgIC8vIFJlYWRpbmcgZnJvbSBhIGZpbGVcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogL15ib2x0OiBHZW5lcmF0aW5nIHNhbXBsZXNcXC9hbGxfYWNjZXNzLmpzb25cXC5cXC5cXC5cXG4kL30gfSxcbiAgICB7IGRhdGE6IFwic2FtcGxlcy9hbGxfYWNjZXNzLmJvbHRcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvXmJvbHQ6IEdlbmVyYXRpbmcgc2FtcGxlc1xcL2FsbF9hY2Nlc3MuanNvblxcLlxcLlxcLlxcbiQvfSB9LFxuICAgIHsgZGF0YTogXCJzYW1wbGVzL2FsbF9hY2Nlc3MgLS1vdXRwdXQgXCIgKyBUTVBfRElSICsgXCJhbGxfYWNjZXNzXCIsXG4gICAgICBleHBlY3Q6IHtvdXQ6IC9eJC8sIGVycjogbmV3IFJlZ0V4cChcIl5ib2x0OiBHZW5lcmF0aW5nIFwiICsgVE1QX0RJUiArIFwiYWxsX2FjY2Vzcy5qc29uXFxcXC5cXFxcLlxcXFwuXFxcXG4kXCIpfSB9LFxuICAgIHsgZGF0YTogXCJzYW1wbGVzL2FsbF9hY2Nlc3MuanNvblwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9ib2x0OiBDYW5ub3Qgb3ZlcndyaXRlL30gfSxcblxuICAgIC8vIEFyZ3VtZW50IGVycm9yc1xuICAgIHsgZGF0YTogXCItLW91dHB1dFwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9eYm9sdDogTWlzc2luZyBvdXRwdXQgZmlsZSBuYW1lL30gfSxcbiAgICB7IGRhdGE6IFwibm9zdWNoZmlsZVwiLFxuICAgICAgZXhwZWN0OiB7b3V0OiAvXiQvLCBlcnI6IC9ib2x0OiBDb3VsZCBub3QgcmVhZCBmaWxlOiBub3N1Y2hmaWxlLmJvbHQvfSB9LFxuICAgIHsgZGF0YTogXCJ0d28gZmlsZXNcIixcbiAgICAgIGV4cGVjdDoge291dDogL14kLywgZXJyOiAvYm9sdDogQ2FuIG9ubHkgY29tcGlsZSBhIHNpbmdsZSBmaWxlL30gfSxcbiAgXTtcblxuICBoZWxwZXIuZGF0YURyaXZlblRlc3QodGVzdHMsIGZ1bmN0aW9uKGRhdGEsIGV4cGVjdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBhcmdzOiBzdHJpbmc7XG5cbiAgICAgIGlmICh0eXBlb2YoZGF0YSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFyZ3MgPSBkYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJncyA9IGRhdGEuYXJncyB8fCAnJztcbiAgICAgIH1cbiAgICAgIGxldCBjaGlsZCA9IHByb2MuZXhlYygnYmluL2ZpcmViYXNlLWJvbHQgJyArIGFyZ3MsIGZ1bmN0aW9uKGVycm9yLCBzdGRvdXQsIHN0ZGVycikge1xuICAgICAgICBpZiAoZXhwZWN0LmVycikge1xuICAgICAgICAgIGFzc2VydC5pc1RydWUoZXhwZWN0LmVyci50ZXN0KHN0ZGVyciksIFwiVW5leHBlY3RlZCBtZXNzYWdlOiAnXCIgKyBzdGRlcnIgKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4cGVjdC5vdXQpIHtcbiAgICAgICAgICBhc3NlcnQuaXNUcnVlKGV4cGVjdC5vdXQudGVzdChzdGRvdXQpLCBcIlVuZXhwZWN0ZWQgb3V0cHV0OiAnXCIgKyBzdGRvdXQgKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBpZiAoZGF0YS5zdGRpbikge1xuICAgICAgICBjaGlsZC5zdGRpbi53cml0ZShkYXRhLnN0ZGluKTtcbiAgICAgICAgY2hpbGQuc3RkaW4uZW5kKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=