142 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { tap, expect } from 'tapbundle'
 | |
| import * as path from 'path'
 | |
| 
 | |
| // Setup test
 | |
| process.env.NPMTS_TEST = 'true'
 | |
| 
 | |
| // set up environment
 | |
| process.env.CI_REPOSITORY_URL = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git'
 | |
| process.env.CI_BUILD_TOKEN = 'kjlkjfiudofiufs'
 | |
| 
 | |
| // Docker
 | |
| process.env.NPMCI_LOGIN_DOCKER = 'docker.io|someuser|somepass'
 | |
| 
 | |
| // SSH env
 | |
| process.env.NPMCI_SSHKEY_1 = 'hostString|somePrivKey|##'
 | |
| 
 | |
| process.cwd = () => {
 | |
|   return path.join(__dirname, 'assets/')
 | |
| }
 | |
| 
 | |
| // require NPMCI files
 | |
| import '../ts/index'
 | |
| import npmciModDocker = require('../ts/mod_docker/index')
 | |
| import npmciModNpm = require('../ts/mod_npm/index')
 | |
| import npmciModNode = require('../ts/mod_node/index')
 | |
| import npmciModSsh = require('../ts/mod_ssh/index')
 | |
| import npmciEnv = require('../ts/npmci.env')
 | |
| 
 | |
| // ======
 | |
| // Docker
 | |
| // ======
 | |
| 
 | |
| let dockerfile1: npmciModDocker.Dockerfile
 | |
| let dockerfile2: npmciModDocker.Dockerfile
 | |
| let sortableArray: npmciModDocker.Dockerfile[]
 | |
| 
 | |
| tap.test('should return valid Dockerfiles', async () => {
 | |
|   dockerfile1 = new npmciModDocker.Dockerfile({ filePath: './Dockerfile', read: true })
 | |
|   dockerfile2 = new npmciModDocker.Dockerfile({ filePath: './Dockerfile_sometag1', read: true })
 | |
|   expect(dockerfile1.version).to.equal('latest')
 | |
|   return expect(dockerfile2.version).to.equal('sometag1')
 | |
| })
 | |
| 
 | |
| tap.test('should read a directory of Dockerfiles', async () => {
 | |
|   return npmciModDocker.helpers.readDockerfiles()
 | |
|     .then(async (readDockerfilesArrayArg: npmciModDocker.Dockerfile[]) => {
 | |
|       sortableArray = readDockerfilesArrayArg
 | |
|       return expect(readDockerfilesArrayArg[1].version).to.equal('sometag1')
 | |
|     })
 | |
| })
 | |
| 
 | |
| tap.test('should sort an array of Dockerfiles', async () => {
 | |
|   return npmciModDocker.helpers.sortDockerfiles(sortableArray)
 | |
|     .then(async (sortedArrayArg: npmciModDocker.Dockerfile[]) => {
 | |
|       console.log(sortedArrayArg)
 | |
|     })
 | |
| })
 | |
| 
 | |
| tap.test('should build all Dockerfiles', async () => {
 | |
|   return npmciModDocker.handleCli({
 | |
|     _: [
 | |
|       'docker',
 | |
|       'build'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| tap.test('should test all Dockerfiles', async () => {
 | |
|   return await npmciModDocker.handleCli({
 | |
|     _: [
 | |
|       'docker',
 | |
|       'test'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| tap.test('should test dockerfiles', async () => {
 | |
|   return await npmciModDocker.handleCli({
 | |
|     _: [
 | |
|       'docker',
 | |
|       'test'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| tap.test('should login docker daemon', async () => {
 | |
|   return await npmciModDocker.handleCli({
 | |
|     _: [
 | |
|       'docker',
 | |
|       'login'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| // ===
 | |
| // SSH
 | |
| // ===
 | |
| tap.test('should prepare SSH keys', async () => {
 | |
|   return await npmciModSsh.handleCli({
 | |
|     _: [
 | |
|       'ssh',
 | |
|       'prepare'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| // ====
 | |
| // node
 | |
| // ====
 | |
| tap.test('should install a certain version of node', async () => {
 | |
|   await npmciModNode.handleCli({
 | |
|     _: [
 | |
|       'node',
 | |
|       'install',
 | |
|       'stable'
 | |
|     ]
 | |
|   })
 | |
|   await npmciModNode.handleCli({
 | |
|     _: [
 | |
|       'node',
 | |
|       'install',
 | |
|       'lts'
 | |
|     ]
 | |
|   })
 | |
|   await npmciModNode.handleCli({
 | |
|     _: [
 | |
|       'node',
 | |
|       'install',
 | |
|       'legacy'
 | |
|     ]
 | |
|   })
 | |
| })
 | |
| 
 | |
| // make sure test ends all right
 | |
| tap.test('reset paths', async () => {
 | |
|   process.cwd = () => {
 | |
|     return path.join(__dirname, '../')
 | |
|   }
 | |
| })
 | |
| 
 | |
| tap.start()
 |