mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
'use strict'
|
|
|
|
const chai = require('chai')
|
|
const path = require('path')
|
|
const sinon = require('sinon')
|
|
const overrideEnv = require('process-utils/override-env')
|
|
const fsp = require('fs').promises
|
|
const loadEnv = require('../../../../lib/cli/load-dotenv')
|
|
const dotenv = require('dotenv')
|
|
const ServerlessError = require('../../../../lib/serverless-error')
|
|
|
|
chai.use(require('chai-as-promised'))
|
|
const expect = require('chai').expect
|
|
|
|
describe('test/unit/lib/cli/load-dotenv.test.js', () => {
|
|
let restoreEnv
|
|
|
|
before(async () => {
|
|
const stage = 'testing'
|
|
const stageFileContent = 'FROM_STAGE=valuefromstage'
|
|
await fsp.writeFile(
|
|
path.join(process.cwd(), `.env.${stage}`),
|
|
stageFileContent,
|
|
)
|
|
|
|
const defaultFileContent = 'FROM_DEFAULT=valuefromdefault'
|
|
await fsp.writeFile(path.join(process.cwd(), '.env'), defaultFileContent)
|
|
})
|
|
|
|
beforeEach(() => {
|
|
restoreEnv = overrideEnv().restoreEnv
|
|
})
|
|
|
|
afterEach(() => {
|
|
restoreEnv && restoreEnv()
|
|
})
|
|
|
|
it('should load matching stage env file if present', async () => {
|
|
await loadEnv('testing')
|
|
expect(process.env).to.not.have.property('FROM_DEFAULT')
|
|
expect(process.env.FROM_STAGE).to.equal('valuefromstage')
|
|
})
|
|
|
|
it('should load from default env file if present and no matching stage file found', async () => {
|
|
await loadEnv('nonmatchingstage')
|
|
expect(process.env.FROM_DEFAULT).to.equal('valuefromdefault')
|
|
expect(process.env).to.not.have.property('FROM_STAGE')
|
|
})
|
|
|
|
it('should throw ServerlessError if dotenv returns error other than missing file', () => {
|
|
const errorMessage = 'Unexpected error while loading env'
|
|
const dotenvResult = sinon
|
|
.stub(dotenv, 'config')
|
|
.returns({ error: new Error(errorMessage) })
|
|
|
|
expect(() => loadEnv('testing'))
|
|
.to.throw(ServerlessError)
|
|
.with.property('code', 'DOTENV_LOAD_ERROR')
|
|
dotenvResult.restore()
|
|
})
|
|
})
|