2019-12-05 15:34:35 +00:00
/ * *
* @license
2020-01-15 19:41:47 +00:00
* Copyright 2019 - 2020 Balena Ltd .
2019-12-05 15:34:35 +00:00
*
* 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 .
* /
2019-11-15 09:45:14 +00:00
import { expect } from 'chai' ;
2019-12-05 15:34:35 +00:00
2021-06-25 23:42:07 +00:00
import { BalenaAPIMock } from '../../nock/balena-api-mock' ;
2019-12-05 15:34:35 +00:00
import { runCommand } from '../../helpers' ;
2019-08-15 12:40:55 +00:00
2020-06-15 22:53:07 +00:00
describe ( 'balena env add' , function ( ) {
2019-12-05 15:34:35 +00:00
let api : BalenaAPIMock ;
2023-10-20 10:06:26 +00:00
const fullUUID = 'f63fd7d7812c34c4c14ae023fdff05f5' ;
2019-12-05 15:34:35 +00:00
beforeEach ( ( ) = > {
api = new BalenaAPIMock ( ) ;
2020-01-15 19:41:47 +00:00
api . expectGetWhoAmI ( { optional : true , persist : true } ) ;
api . expectGetMixpanel ( { optional : true } ) ;
2019-12-05 15:34:35 +00:00
} ) ;
afterEach ( ( ) = > {
// Check all expected api calls have been made and clean up.
api . done ( ) ;
} ) ;
2019-08-15 12:40:55 +00:00
it ( 'should successfully add an environment variable' , async ( ) = > {
2020-01-15 19:41:47 +00:00
api . expectGetDevice ( { fullUUID } ) ;
api . expectGetConfigVars ( ) ;
2019-12-05 17:09:02 +00:00
api . scope
. post ( /^\/v\d+\/device_environment_variable($|\?)/ )
. reply ( 200 , 'OK' ) ;
2019-08-15 12:40:55 +00:00
2020-01-15 19:41:47 +00:00
const { out , err } = await runCommand ( ` env add TEST 1 -d ${ fullUUID } ` ) ;
2019-08-15 12:40:55 +00:00
2019-11-15 09:45:14 +00:00
expect ( out . join ( '' ) ) . to . equal ( '' ) ;
expect ( err . join ( '' ) ) . to . equal ( '' ) ;
2019-08-15 12:40:55 +00:00
} ) ;
2023-10-20 10:06:26 +00:00
it ( 'should reject adding an environment variable w/o specifying a value when the process environment does not have an env var with the same name defined' , async ( ) = > {
// make sure that that there is no such env var defined atm
delete process . env . TEST_ENV_VAR_ADD_NO_VALUE_REJECTED ;
const { out , err } = await runCommand (
` env add TEST_ENV_VAR_ADD_NO_VALUE_REJECTED -d ${ fullUUID } ` ,
) ;
expect ( out . join ( '' ) ) . to . equal ( '' ) ;
// Depending the context that the test was running , this was emiting either 1 or 2 '\n'
expect ( err . join ( '' ) ) . to . be . oneOf ( [
'Value not found for environment variable: TEST_ENV_VAR_ADD_NO_VALUE_REJECTED\n' ,
'Value not found for environment variable: TEST_ENV_VAR_ADD_NO_VALUE_REJECTED\n\n' ,
] ) ;
} ) ;
it ( 'should successfully add an environment variable w/o specifying a value when the process environment has an env var with the same name defined' , async ( ) = > {
api . expectGetDevice ( { fullUUID } ) ;
api . expectGetConfigVars ( ) ;
api . scope
. post ( /^\/v\d+\/device_environment_variable($|\?)/ )
. reply ( 200 , 'OK' ) ;
process . env . TEST_ENV_VAR_ADD_NO_VALUE = '4' ;
const { out , err } = await runCommand (
` env add TEST_ENV_VAR_ADD_NO_VALUE -d ${ fullUUID } ` ,
) ;
delete process . env . TEST_ENV_VAR_ADD_NO_VALUE ;
expect ( out . join ( '' ) ) . to . equal ( '' ) ;
expect ( err . join ( '' ) ) . to . be . oneOf ( [
' › Warning: Using TEST_ENV_VAR_ADD_NO_VALUE=4 from CLI process environment\n' ,
// emitted when running on the windows instance
' » Warning: Using TEST_ENV_VAR_ADD_NO_VALUE=4 from CLI process environment\n' ,
] ) ;
} ) ;
it ( 'should successfully add an environment variable w/ empty string as a value' , async ( ) = > {
api . expectGetDevice ( { fullUUID } ) ;
api . expectGetConfigVars ( ) ;
api . scope
. post ( /^\/v\d+\/device_environment_variable($|\?)/ )
. reply ( 200 , 'OK' ) ;
const { out , err } = await runCommand (
` env add TEST_EMPTY_STRING '' -d ${ fullUUID } ` ,
) ;
expect ( out . join ( '' ) ) . to . equal ( '' ) ;
expect ( err . join ( '' ) ) . to . equal ( '' ) ;
} ) ;
2019-08-15 12:40:55 +00:00
} ) ;