GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

SystemUnderTestConfig   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8
Metric Value
wmc 14
lcom 1
cbo 8
dl 0
loc 69
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A validateConfig() 0 13 2
A validateAppSettings() 0 18 3
D validateRoles() 0 33 9
1
<?php
2
3
/**
4
 * Copyright (c) 2011-present Mediasift Ltd
5
 * All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 *
11
 *   * Redistributions of source code must retain the above copyright
12
 *     notice, this list of conditions and the following disclaimer.
13
 *
14
 *   * Redistributions in binary form must reproduce the above copyright
15
 *     notice, this list of conditions and the following disclaimer in
16
 *     the documentation and/or other materials provided with the
17
 *     distribution.
18
 *
19
 *   * Neither the names of the copyright holders nor the names of his
20
 *     contributors may be used to endorse or promote products derived
21
 *     from this software without specific prior written permission.
22
 *
23
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
 * POSSIBILITY OF SUCH DAMAGE.
35
 *
36
 * @category  Libraries
37
 * @package   Storyplayer/SystemsUnderTestLib
38
 * @author    Stuart Herbert <[email protected]>
39
 * @copyright 2011-present Mediasift Ltd www.datasift.com
40
 * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
41
 * @link      http://datasift.github.io/storyplayer
42
 */
43
44
namespace DataSift\Storyplayer\SystemsUnderTestLib;
45
46
use DataSift\Storyplayer\ConfigLib\WrappedConfig;
47
48
/**
49
 * the class for the config that represents a single system under test
50
 *
51
 * @category  Libraries
52
 * @package   Storyplayer/SystemsUnderTestLib
53
 * @author    Stuart Herbert <[email protected]>
54
 * @copyright 2011-present Mediasift Ltd www.datasift.com
55
 * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
56
 * @link      http://datasift.github.io/storyplayer
57
 */
58
class SystemUnderTestConfig extends WrappedConfig
59
{
60
    public function validateConfig()
61
    {
62
        // the config we are checking
63
        $config = $this->getConfig();
64
65
        // make sure it is an object, and not an array
66
        if (!is_object($config)) {
67
            throw new E4xx_SystemUnderTestConfigMustBeAnObject($this->getFilename());
68
        }
69
70
        $this->validateAppSettings();
71
        $this->validateRoles();
72
    }
73
74
    protected function validateAppSettings()
75
    {
76
        // do we have any app settings to validate?
77
        if (!$this->hasData('appSettings')) {
78
            // nothing to see here, move along
79
            return;
80
        }
81
82
        $appSettings = $this->getData('appSettings');
83
        if (!is_object($appSettings)) {
84
            throw new E4xx_SystemUnderTestAppSettingsMustBeAnObject($this->getFilename());
85
        }
86
87
        // we don't care what (if anything) is inside the appSettings
88
        // section
89
        //
90
        // all done
91
    }
92
93
    protected function validateRoles()
94
    {
95
        // do we have any roles to validate?
96
        if (!$this->hasData('roles')) {
97
            // nothing to see here, move along
98
            return;
99
        }
100
101
        // roles is meant to be an array of objects
102
        $roles = $this->getData('roles');
103
        if (!is_array($roles)) {
104
            throw new E4xx_SystemUnderTestRolesMustBeAnArray($this->getFilename());
105
        }
106
107
        // make sure each role in the list fits what we want
108
        foreach ($roles as $index => $roleObj) {
109
            if (!is_object($roleObj)) {
110
                throw new E4xx_SystemUnderTestRoleMustBeAnObject($this->getFilename(), $index);
111
            }
112
            if (!isset($roleObj->role)) {
113
                throw new E4xx_SystemUnderTestRoleMustSayWhichRoleItIs($this->getFilename(), $index);
114
            }
115
            if (!is_string($roleObj->role)) {
116
                throw new E4xx_SystemUnderTestRoleNameMustBeString($this->getFilename(), $index);
117
            }
118
            if (!isset($roleObj->params)) {
119
                throw new E4xx_SystemUnderTestRoleMustHaveParams($this->getFilename(), $index);
120
            }
121
            if (!is_object($roleObj->params)) {
122
                throw new E4xx_SystemUnderTestRoleParamsMustBeAnObject($this->getFilename(), $index);
123
            }
124
        }
125
    }
126
}
127