Skip to content

Commit 15eeeaf

Browse files
author
Jens Averkamp
committed
Add Tests
1 parent 409199b commit 15eeeaf

File tree

6 files changed

+136
-11
lines changed

6 files changed

+136
-11
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
.idea
2+
vendor
3+
composer.lock

DependencyInjection/Zeichen32GitLabApiExtension.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function load(array $configs, ContainerBuilder $container)
3131

3232
private function addClients(array $clients, ContainerBuilder $container) {
3333
foreach($clients as $name => $client) {
34-
$this->createClient($name, $client['url'], $client['token'], $client['auth_method'], $client['options'], $container);
34+
$this->createClient($name, $client['url'], $client['token'], $client['auth_method'], $client['sudo'], $client['options'], $container);
3535
}
3636

3737
reset($clients);
@@ -42,23 +42,26 @@ private function setDefaultClient($name, ContainerBuilder $container) {
4242
$container->setAlias('zeichen32_gitlabapi.client.default', sprintf('zeichen32_gitlabapi.client.%s', $name));
4343
}
4444

45-
private function createClient($name, $url, $token, $authMethod, array $options = array(), ContainerBuilder $container) {
45+
private function createClient($name, $url, $token, $authMethod, $sudo, array $options = array(), ContainerBuilder $container) {
4646

4747
$definition = new Definition('%zeichen32_gitlabapi.client.class%', array(
4848
$url
4949
));
5050

5151
$definition->addMethodCall('authenticate', array(
5252
$token,
53-
$authMethod
53+
$authMethod,
54+
$sudo
5455
));
5556

5657
if(count($options) > 0) {
5758
foreach($options as $key => $value) {
58-
$definition->addMethodCall('setOption', array(
59-
$key,
60-
$value
61-
));
59+
if(null !== $value) {
60+
$definition->addMethodCall('setOption', array(
61+
$key,
62+
$value
63+
));
64+
}
6265
}
6366
}
6467

Tests/DependencyInjection/Zeichen32GitLabApiExtensionTest.php

Lines changed: 88 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,95 @@
88
* Time: 13:56
99
*/
1010

11-
namespace Zeichen32;
11+
namespace Zeichen32\GitLabApiBundle\Tests\DependencyInjection;
1212

13+
use Gitlab\Client;
14+
use Symfony\Component\DependencyInjection\ContainerBuilder;
15+
use Zeichen32\GitLabApiBundle\DependencyInjection\Zeichen32GitLabApiExtension;
1316

14-
class Zeichen32GitLabApiExtensionTest {
17+
class Zeichen32GitLabApiExtensionTest extends \PHPUnit_Framework_TestCase{
1518

19+
/**
20+
* @var ContainerBuilder
21+
*/
22+
private $container;
23+
/**
24+
* @var Zeichen32GitLabApiExtension
25+
*/
26+
private $extension;
27+
28+
29+
public function setUp()
30+
{
31+
$this->container = new ContainerBuilder();
32+
$this->extension = new Zeichen32GitLabApiExtension();
33+
}
34+
35+
public function tearDown()
36+
{
37+
unset($this->container, $this->extension);
38+
}
39+
40+
public function testCreateClients()
41+
{
42+
43+
$config = array(
44+
'zeichen32_git_lab_api' => array('clients' => array(
45+
'firstclient' => array('token' => '12345', 'url' => 'http://example.org/api/v3/'),
46+
'secondclient' => array('token' => '12345', 'url' => 'http://example.com/api/v3/')
47+
)),
48+
);
49+
50+
$this->extension->load($config, $this->container);
51+
$this->assertTrue($this->container->hasAlias('zeichen32_gitlabapi.client.default'));
52+
$this->assertTrue($this->container->has('zeichen32_gitlabapi.client.firstclient'));
53+
$this->assertTrue($this->container->has('zeichen32_gitlabapi.client.secondclient'));
54+
55+
$this->assertInstanceOf('Gitlab\Client', $this->container->get('zeichen32_gitlabapi.client.default'));
56+
$this->assertInstanceOf('Gitlab\Client', $this->container->get('zeichen32_gitlabapi.client.firstclient'));
57+
$this->assertInstanceOf('Gitlab\Client', $this->container->get('zeichen32_gitlabapi.client.secondclient'));
58+
}
59+
60+
/**
61+
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
62+
*/
63+
public function testWrongAuthMethod() {
64+
$config = array(
65+
'zeichen32_git_lab_api' => array('clients' => array(
66+
'firstclient' => array(
67+
'token' => '12345',
68+
'url' => 'http://example.org/api/v3/',
69+
'auth_method' => 'xyz'
70+
),
71+
)),
72+
);
73+
74+
$this->extension->load($config, $this->container);
75+
}
76+
77+
public function testOptions() {
78+
$config = array(
79+
'zeichen32_git_lab_api' => array('clients' => array(
80+
'firstclient' => array(
81+
'token' => '12345',
82+
'url' => 'http://example.org/api/v3/',
83+
'auth_method' => Client::AUTH_URL_TOKEN,
84+
'sudo' => '1',
85+
'options' => array(
86+
'timeout' => 120,
87+
'user_agent' => 'TestAgent',
88+
)
89+
),
90+
)),
91+
);
92+
93+
$this->extension->load($config, $this->container);
94+
$this->assertTrue($this->container->has('zeichen32_gitlabapi.client.default'));
95+
96+
/** @var Client $client */
97+
$client = $this->container->get('zeichen32_gitlabapi.client.default');
98+
$this->assertEquals(120, $client->getOption('timeout'));
99+
$this->assertEquals('TestAgent', $client->getOption('user_agent'));
100+
101+
}
16102
}

Tests/Zeichen32GitLabApiBundleTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
namespace eichen32\GitLabApiBundle;
1212

13-
1413
use Zeichen32\GitLabApiBundle\Zeichen32GitLabApiBundle;
1514

1615
class Zeichen32GitLabApiBundleTest extends \PHPUnit_Framework_TestCase {
@@ -20,9 +19,11 @@ public function testBuild()
2019
$container = $this->getMockBuilder('\Symfony\Component\DependencyInjection\ContainerBuilder')
2120
->setMethods(array('addCompilerPass'))
2221
->getMock();
23-
$container->expects($this->exactly(4))
22+
23+
$container->expects($this->exactly(0))
2424
->method('addCompilerPass')
2525
->with($this->isInstanceOf('\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface'));
26+
2627
$bundle = new Zeichen32GitLabApiBundle();
2728
$bundle->build($container);
2829
}

Tests/bootstrap.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
$file = __DIR__.'/../vendor/autoload.php';
4+
if (!file_exists($file)) {
5+
throw new RuntimeException('Install dependencies to run test suite.');
6+
}
7+
$autoload = require_once $file;

phpunit.xml.dist

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<phpunit bootstrap="./Tests/bootstrap.php" colors="true">
4+
<php>
5+
<!-- Disable E_USER_DEPRECATED until 3.0 -->
6+
<!-- php -r 'echo -1 & ~E_USER_DEPRECATED;' -->
7+
<ini name="error_reporting" value="-16385"/>
8+
</php>
9+
10+
<testsuites>
11+
<testsuite name="Zeichen32GitLabApiBundle test suite">
12+
<directory suffix="Test.php">./Tests</directory>
13+
</testsuite>
14+
</testsuites>
15+
16+
<filter>
17+
<whitelist>
18+
<directory>./</directory>
19+
<exclude>
20+
<directory>./Resources</directory>
21+
<directory>./Tests</directory>
22+
<directory>./vendor</directory>
23+
</exclude>
24+
</whitelist>
25+
</filter>
26+
</phpunit>

0 commit comments

Comments
 (0)