UNPKG

@codefresh-io/yaml-validator

Version:

An NPM module/CLI for validating the Codefresh YAML

82 lines (67 loc) 2.54 kB
/** * Defines the "IntegrationTest step" schema, which is a step that is basic a simplified facade * for a composition step. */ 'use strict'; //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ const Joi = require('joi'); const BaseSchema = require('./../base-schema'); class IntegrationTest extends BaseSchema { //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ static getType() { return 'integration-test'; } getSchema() { const preconfiguredServicesArray = Joi.array().items( Joi.string().valid([ 'mysql', 'postgresql', 'mariadb', 'mongodb', 'couchdb', 'rabbitmq', // 'riak', // complex as fuck: https://hub.docker.com/r/basho/riak-kv/ 'memcached', 'redis', 'cassandra', 'neo4j', 'elasticsearch', 'rethinkdb' ]) ); const environmentAsObject = Joi.object({}) .pattern(/[_a-zA-Z][_a-zA-Z0-9]{1,30}/, Joi.string()); const environmentAsArray = Joi.array().items( Joi.string().regex(/^[_a-zA-Z][_a-zA-Z0-9]{1,256}=.*/) ); const serviceObject = Joi.object({ image: Joi.string().required(), ports: Joi.array( Joi.number() ), environment: Joi.alternatives( environmentAsArray, environmentAsObject ), }); const servicesObject = Joi.object({}).pattern(/.*/, serviceObject); const testObject = Joi.object({ image: Joi.string().required(), commands: Joi.array().items(Joi.string().trim().min(1).required()).required(), working_directory: Joi.string(), }).required(); const compositionProperties = { type: Joi.string().valid(IntegrationTest.getType()), services: servicesObject, preconfigured_services: preconfiguredServicesArray, test: testObject }; return this._createSchema(compositionProperties).unknown(); } } // Exported objects/methods module.exports = IntegrationTest;