3 use PHPUnit\Framework\TestCase;
4 require_once(
'FeatureGateConfig.i');
7 private $featureGateConfig;
10 protected function setUp() {
14 $this->featureGateConfig = $this
15 ->getMockBuilder(FeatureGateConfig::class)
16 ->setMethods([
'GetConfig'])
17 ->disableOriginalConstructor()
20 $this->featureGateConfig
21 ->expects(static::once())
23 ->will(static::returnCallback(
31 'feature' =>
'FEATURE_A',
37 'feature' =>
'FEATURE_B',
43 'feature' =>
'FEATURE_C',
45 'enabled_cu' =>
'["SCRUBCU","CRUISECU","MYCU","CUL8TR"]',
46 'params' =>
'{"MYCU":{"usernames":["smith","jones"]}, "SCRUBCU":{"usernames":["bongobob", "4188"]},"CUL8TR":{"usernames":["mike"], "ip":["1.2.3.4","3.4.5.6"]}}',
52 public function testLoadConfig() {
53 $class =
new ReflectionClass(FeatureGateConfig::class);
54 $data = $class->getProperty(
'data');
55 $data->setAccessible(
true);
56 $loadConfig = $class->getMethod(
'LoadConfig');
57 $loadConfig->setAccessible(
true);
79 "MYCU" => [
'usernames' => [
'smith',
'jones']],
80 "SCRUBCU" => [
'usernames' => [
'bongobob',
'4188']],
81 "CUL8TR" => [
'usernames' =>[
"mike"],
"ip" => [
"1.2.3.4",
"3.4.5.6"]]
86 $loadConfig->invoke($this->featureGateConfig);
87 static::assertEquals($expected, $data->getValue($this->featureGateConfig));
90 public function testGetFeatureData() {
91 $class =
new ReflectionClass(FeatureGateConfig::class);
92 $loadConfig = $class->getMethod(
'LoadConfig');
93 $loadConfig->setAccessible(
true);
94 $loadConfig->invoke($this->featureGateConfig);
105 "MYCU" => [
'usernames' => [
'smith',
'jones']],
106 "SCRUBCU" => [
'usernames' => [
'bongobob',
'4188']],
107 "CUL8TR" => [
'usernames' =>[
"mike"],
"ip" => [
"1.2.3.4",
"3.4.5.6"]]
111 static::assertEquals($expected, $this->featureGateConfig->GetFeatureData(
'FEATURE_C'));
114 public function testNoDbData() {
117 $class =
new ReflectionClass(FeatureGateConfig::class);
118 $data = $class->getProperty(
'data');
119 $data->setAccessible(
true);
120 $loadConfig = $class->getMethod(
'LoadConfig');
121 $loadConfig->setAccessible(
true);
122 $loadConfig->invoke($this->featureGateConfig);
124 static::assertEmpty($data->getValue($this->featureGateConfig));
125 static::assertEmpty($this->featureGateConfig->GetFeatureData(
'FEATURE_A'));
128 public function testInvalidFeature() {
129 $class =
new ReflectionClass(FeatureGateConfig::class);
130 $data = $class->getProperty(
'data');
131 $data->setAccessible(
true);
132 $loadConfig = $class->getMethod(
'LoadConfig');
133 $loadConfig->setAccessible(
true);
134 $loadConfig->invoke($this->featureGateConfig);
136 static::assertFalse($this->featureGateConfig->GetFeatureData(
'FEATURE_D'));