Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function createFakeServerless() {
const sls = new Serverless()
// Attach the plugin
sls.pluginManager.addPlugin(ServerlessAWSResolvers)
sls.init()
return sls
}
test('Skips credstash populate if requested', async t => {
const sls = new Serverless()
sls.service.custom = _.cloneDeep(CREDSTASH_CONFIG)
const plugin = initServerlessPlugin(sls)
plugin.options.credstash = 'false'
await sls.variables.populateService()
t.is(sls.service.custom.test.a, 'credstash:testCredential') // eslint-disable-line
})
var node = model.nodes[id];
renderingRules[node.type].resource(status, node);
}
console.log(template); // Still in JSON
console.log(JSON.stringify(template, null, 4)); // JSON -> text
for (var r in template.Resources) {
console.log(r + " -> YAML");
console.log(jsyaml.safeDump(template.Resources[r], { lineWidth: 1024 }));
}
// Line breaks can introduce YAML syntax (e.g. >-) that will put some variables
// (e.g. AWS::Region) between quotes.
// Single quotes must be removed for functions (e.g. Fn::GetAtt) to work.
files['serverless.yml'] = jsyaml.safeDump(template, { lineWidth: 1024 }).replace(/'(!.+)'/g, "$1");
return files;
}
var node = model.nodes[id];
renderingRules[node.type].resource(status, node);
}
console.log(template); // Still in JSON
console.log(JSON.stringify(template, null, 4)); // JSON -> text
for (var r in template.Resources) {
console.log(r + " -> YAML");
console.log(jsyaml.safeDump(template.Resources[r], { lineWidth: 1024 }));
}
// Line breaks can introduce YAML syntax (e.g. >-) that will put some variables
// (e.g. AWS::Region) between quotes.
// Single quotes must be removed for functions (e.g. Fn::GetAtt) to work.
files['serverless.yml'] = jsyaml.safeDump(template, { lineWidth: 1024 }).replace(/'(!.+)'/g, "$1");
return files;
}
export default function parseServiceYaml(path) {
// CD into project directory
process.chdir(path)
const yamlPath = getServerlessYamlFilePath(path)
const rawYAML = parseYaml(yamlPath)
// Parse yamlAST and set Global. Todo: add to state
parseYamlAST(yamlPath)
// End AST parse.
const serverless = new Serverless()
return serverless.service.load()
.then(() => {
// TODO: pass in opts to popluate services https://github.com/serverless/serverless/blob/079c4459cc671fa54837d20015ce9176eee6d7cd/lib/classes/PluginManager.test.js#L218-L225
const service = serverless.variables.populateService()
const populatedService = {
defaults: service.defaults,
functions: service.functions,
provider: service.provider,
resources: service.resources,
service: service.service,
}
// merge raw YAML and variable populated yaml
return mergeYamlObjects(rawYAML, populatedService)
})
}
test('Throws if no stage is found', t => {
const sls = new Serverless()
t.throws(() => initServerlessPlugin(sls), /No stage found.*/)
})
test('Merges environment', async t => {
const sls = new Serverless()
sls.service.custom = {
defaults: {
stage: 'test'
},
deploy: {
environments: {
default: { a: 1 },
test: {
b: 'foo'
}
}
}
}
const plugin = initServerlessPlugin(sls)
beforeEach(() => {
serverless = new Serverless();
serverless.service.resources = { Resources: {} };
alexaPlugin = new ServerlessAlexaPlugin(serverless);
alexaPlugin.serverless.service.service = 'new-service';
});