Completed
Push — master ( d0c173...e44a53 )
by Henry
09:36
created

tests/unit/Controller/LoginTest.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript\Tests\Controller;
3
4
use Redaxscript\Controller;
5
use Redaxscript\Db;
6
use Redaxscript\Tests\TestCaseAbstract;
7
8
/**
9
 * LoginTest
10
 *
11
 * @since 3.0.0
12
 *
13
 * @package Redaxscript
14
 * @category Tests
15
 * @author Henry Ruhs
16
 * @author Balázs Szilágyi
17
 *
18
 * @covers Redaxscript\Controller\ControllerAbstract
19
 * @covers Redaxscript\Controller\Login
20
 */
21
22
class LoginTest extends TestCaseAbstract
23
{
24
	/**
25
	 * setUp
26
	 *
27
	 * @since 3.1.0
28
	 */
29
30
	public function setUp() : void
31
	{
32
		parent::setUp();
33
		$optionArray =
34
		[
35
			'adminName' => 'Test',
36
			'adminUser' => 'test',
37
			'adminPassword' => 'test',
38
			'adminEmail' => '[email protected]'
39
		];
40
		$installer = $this->installerFactory();
41
		$installer->init();
42
		$installer->rawCreate();
43
		$installer->insertSettings($optionArray);
44
		$installer->insertUsers($optionArray);
45
		$setting = $this->settingFactory();
46
		$setting->set('captcha', 1);
47
	}
48
49
	/**
50
	 * tearDown
51
	 *
52
	 * @since 3.1.0
53
	 */
54
55
	public function tearDown() : void
56
	{
57
		$this->dropDatabase();
58
	}
59
60
	/**
61
	 * testProcess
62
	 *
63
	 * @since 3.0.0
64
	 *
65
	 * @param array $postArray
66
	 * @param array $userArray
67
	 * @param string $method
68
	 * @param string $expect
69
	 *
70
	 * @dataProvider providerAutoloader
71
	 */
72
73
	public function testProcess(array $postArray = [], array $userArray = [], string $method = null, string $expect = null) : void
74
	{
75
		/* setup */
76
77
		Db::forTablePrefix('users')
78
			->whereIdIs(1)
79
			->findOne()
80
			->set('status', $userArray['status'])
81
			->save();
82
		$this->_request->set('post', $postArray);
83
		if ($method)
0 ignored issues
show
Bug Best Practice introduced by
The expression $method of type null|string is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
84
		{
85
			$loginController = $this
86
				->getMockBuilder('Redaxscript\Controller\Login')
87
				->setConstructorArgs(
88
				[
89
					$this->_registry,
90
					$this->_request,
91
					$this->_language,
92
					$this->_config
93
				])
94
				->setMethods(
95
				[
96
					$method
97
				])
98
				->getMock();
99
100
			/* override */
101
102
			$loginController
103
				->expects($this->any())
104
				->method($method);
105
		}
106
		else
107
		{
108
			$loginController = new Controller\Login($this->_registry, $this->_request, $this->_language, $this->_config);
109
		}
110
111
		/* actual */
112
113
		$actual = $loginController->process();
114
115
		/* compare */
116
117
		$this->assertEquals($expect, $actual);
118
	}
119
}
120