/** * @license * Copyright 2019-2020 Balena Ltd. * * 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. */ import { expect } from 'chai'; import { BalenaAPIMock } from '../nock/balena-api-mock'; import { cleanOutput, runCommand } from '../helpers'; import * as messages from '../../build/utils/messages'; const SIMPLE_HELP = ` USAGE $ balena [COMMAND] [OPTIONS] PRIMARY COMMANDS login login to balena push start a remote build on the balenaCloud build servers or a local mode device app display information about a single application device show info about a single device tunnel tunnel local ports to your balenaOS device preload preload an app on a disk image (or Edison zip archive) build build a project locally deploy deploy a single image or a multicontainer project to a balena application join move a local device to an application on another balena server leave remove a local device from its balena application `; const ADDITIONAL_HELP = ` ADDITIONAL COMMANDS api-key generate generate a new balenaCloud API key app create create an application app restart restart an application app rm remove an application config generate generate a config.json file config inject inject a configuration file into a device or OS image config read read the configuration of a device or OS image config reconfigure interactively reconfigure a device or OS image config write write a key-value pair to configuration of a device or OS image device detect scan for balenaOS devices on your local network device identify identify a device device init initialise a device with balenaOS device list list all devices device logs show device logs device move move one or more devices to another application device os-update start a Host OS update for a device device public-url get or manage the public URL for a device device reboot restart a device device register register a device device rename rename a device device rm remove one or more devices device shutdown shutdown a device device ssh SSH into the host or application container of a device devices supported list the supported device types (like 'raspberrypi3' or 'intel-nuc') env set add or update env or config variable to application(s), device(s) or service(s) env list list the environment or config variables of an application, device or service env rename change the value of a config or env var for an app, device or service env rm remove a config or env var from an application, device or service ssh-key display an SSH key ssh-key add add an SSH key to balenaCloud ssh-key list list the SSH keys in balenaCloud ssh-key rm remove an SSH key from balenaCloud local configure (Re)configure a balenaOS drive or image local flash flash an image to a drive logout logout from balena note set a device note os build-config build an OS config and save it to a JSON file os configure configure a previously downloaded balenaOS image os download download an unconfigured OS image os initialize initialize an os image for a device os versions show available balenaOS versions for the given device type settings print current settings tag list list all tags for a app, block, fleet, device or release tag rm remove a tag from an app, block, fleet, device or release tag set set a tag on an app, block, fleet, device or release util available-drives list available drives version display version information for the balena CLI and/or Node.js whoami display account information for current user `; const LIST_ADDITIONAL = ` ...MORE run balena help --verbose to list additional commands. `; const GLOBAL_OPTIONS = ` GLOBAL OPTIONS --help, -h --debug `; const ONLINE_RESOURCES = messages.reachingOut; describe.skip('balena help', function () { let api: BalenaAPIMock; this.beforeEach(() => { api = new BalenaAPIMock(); }); this.afterEach(() => { // Check all expected api calls have been made and clean up. api.done(); }); it('should list primary command summaries', async () => { const { out, err } = await runCommand('help'); expect(cleanOutput(out)).to.deep.equal( cleanOutput([ SIMPLE_HELP, LIST_ADDITIONAL, GLOBAL_OPTIONS, ONLINE_RESOURCES, ]), ); expect(err.join('')).to.equal(''); }); it('should list all command summaries with the -v flag', async () => { const { out, err } = await runCommand('help -v'); expect(cleanOutput(out)).to.deep.equal( cleanOutput([ SIMPLE_HELP, ADDITIONAL_HELP, GLOBAL_OPTIONS, ONLINE_RESOURCES, ]), ); expect(err.join('')).to.equal(''); expect(err.join('')).to.equal(''); }); it('should list primary command summaries', async () => { const { out, err } = await runCommand(''); expect(cleanOutput(out)).to.deep.equal( cleanOutput([ SIMPLE_HELP, LIST_ADDITIONAL, GLOBAL_OPTIONS, ONLINE_RESOURCES, ]), ); expect(err.join('')).to.equal(''); }); });