Passed
Push — test ( d838cf...cef4a5 )
by Tom
03:29
created

StepServiceContainersTest::testCreation()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* this file is part of pipelines */
4
5
namespace Ktomk\Pipelines\Runner\Containers;
6
7
use Ktomk\Pipelines\Cli\ExecTester;
8
use Ktomk\Pipelines\Cli\Streams;
9
use Ktomk\Pipelines\File\File;
10
use Ktomk\Pipelines\Runner\Env;
11
use Ktomk\Pipelines\Runner\Flags;
12
use Ktomk\Pipelines\Runner\Runner;
13
use Ktomk\Pipelines\TestCase;
14
15
/**
16
 * Class StepServiceContainersTest
17
 *
18
 * @package Ktomk\Pipelines\Runner\Containers
19
 * @covers \Ktomk\Pipelines\Runner\Containers\StepServiceContainers
20
 */
21
class StepServiceContainersTest extends TestCase
22
{
23
    public function testCreation()
24
    {
25
        $step = $this->createMock('Ktomk\Pipelines\File\Pipeline\Step');
26
        $runner = $this->createMock('Ktomk\Pipelines\Runner\Runner');
27
28
        $services = new StepServiceContainers($step, $runner);
29
        self::assertInstanceOf('Ktomk\Pipelines\Runner\Containers\StepServiceContainers', $services);
30
    }
31
32
    public function testObtainNetworkWithoutServices()
33
    {
34
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
35
            __DIR__ . '/../../../data/yml/bitbucket-pipelines.yml'
36
        );
37
38
        $services = new StepServiceContainers($step, $runner);
39
        self::assertSame(array(), $services->obtainNetwork());
40
    }
41
42
    public function testObtainNetworkWithService()
43
    {
44
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
45
            __DIR__ . '/../../../data/yml/service-definitions.yml'
46
        );
47
48
        $exec->expect('capture', 'docker');
49
50
        $services = new StepServiceContainers($step, $runner);
51
        self::assertSame(array('--network', 'host'), $services->obtainNetwork());
52
    }
53
54
    public function testShutdown()
55
    {
56
        list($step, $runner, $exec) = $this->createStepAndRunnerMocks(
57
            __DIR__ . '/../../../data/yml/service-definitions.yml'
58
        );
59
60
        $exec->expect('capture', 'docker');
61
        $exec->expect('capture', 'docker');
62
63
        $services = new StepServiceContainers($step, $runner);
64
        $services->shutdown(0);
65
    }
66
67
    /**
68
     * @param string $path of pipelines yaml file
69
     *
70
     * @return array
71
     */
72
    private function createStepAndRunnerMocks($path)
73
    {
74
        $file = File::createFromFile($path);
75
        $step = $file->getDefault()->getSteps()->offsetGet(0);
76
        $runOpts = $this->createConfiguredMock('Ktomk\Pipelines\Runner\RunOpts', array(
77
            'getPrefix' => 'prefix',
78
        ));
79
80
        $runner = new Runner(
81
            $runOpts,
82
            $this->createMock('Ktomk\Pipelines\Runner\Directories'),
83
            $exec = new ExecTester($this),
84
            new Flags(),
85
            new Env(),
86
            new Streams()
87
        );
88
89
        return array($step, $runner, $exec);
90
    }
91
}
92