Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/UsersManager/tests/Integration/UsersManagerTest.php')
-rw-r--r--plugins/UsersManager/tests/Integration/UsersManagerTest.php273
1 files changed, 150 insertions, 123 deletions
diff --git a/plugins/UsersManager/tests/Integration/UsersManagerTest.php b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
index 49059acc10..92188ea024 100644
--- a/plugins/UsersManager/tests/Integration/UsersManagerTest.php
+++ b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
@@ -13,18 +13,15 @@ use Piwik\Access;
use Piwik\Auth\Password;
use Piwik\Date;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\NewsletterSignup;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Plugins\UsersManager\UserUpdater;
-use Piwik\SettingsPiwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\View;
/**
@@ -66,7 +63,7 @@ class UsersManagerTest extends IntegrationTestCase
FakeAccess::$superUserLogin = 'superusertest';
$this->backupIdentity = FakeAccess::$identity;
- $this->api = API::getInstance();
+ $this->api = API::getInstance();
$this->model = new Model();
}
@@ -109,10 +106,13 @@ class UsersManagerTest extends IntegrationTestCase
unset($userAfter['idchange_last_viewed']);
unset($userAfter['password']);
unset($userAfter['invite_status']);
-
+ unset($userAfter['invite_token']);
+ unset($userAfter['invite_expired_at']);
+ unset($userAfter['invite_accept_at']);
+ unset($userAfter['invited_by']);
// implicitly checks password!
- $user['email'] = $newEmail;
+ $user['email'] = $newEmail;
$user['superuser_access'] = 0;
$user['twofactor_secret'] = '';
@@ -130,9 +130,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionInvalidPassword');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com",
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -150,10 +152,10 @@ class UsersManagerTest extends IntegrationTestCase
public function getAddUserInvalidLoginData()
{
return array(
- array(9, "password", "email@email.com"), // wrong login / integer => exception
- array("gegag'ggea'", "password", "email@email.com"), // wrong login / too short => exception
- array("gegag11gge&", "password", "email@email.com"), // wrong login / too long => exception
- array("geg'ag11gge@", "password", "email@email.com"), // wrong login / bad characters => exception
+ array(9, "password", "email@email.com"), // wrong login / integer => exception
+ array("gegag'ggea'", "password", "email@email.com"), // wrong login / too short => exception
+ array("gegag11gge&", "password", "email@email.com"), // wrong login / too long => exception
+ array("geg'ag11gge@", "password", "email@email.com"), // wrong login / bad characters => exception
);
}
@@ -177,6 +179,25 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser("test", "password2", "em2ail@email.com");
}
+ public function testAddUserExistingEmail()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExists');
+
+ $this->api->addUser("test", "password", "email@email.com");
+ $this->api->addUser("test2", "password2", "email@email.com");
+ }
+
+
+ public function testAddUserExistingEmailAsUserName()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('UsersManager_ExceptionEmailExistsAsLogin');
+
+ $this->api->addUser("email@email.com", "password", "email2@email.com");
+ $this->api->addUser("test2", "password2", "email@email.com");
+ }
+
/**
* @see https://github.com/piwik/piwik/issues/8548
*/
@@ -195,8 +216,8 @@ class UsersManagerTest extends IntegrationTestCase
public function getWrongPasswordTestData()
{
return array(
- array("geggeqgeqag", "pas", "email@email.com"), // too short -> exception
- array("geggeqgeqag", "", "email@email.com"), // empty -> exception
+ array("geggeqgeqag", "pas", "email@email.com"), // too short -> exception
+ array("geggeqgeqag", "", "email@email.com"), // empty -> exception
);
}
@@ -225,7 +246,9 @@ class UsersManagerTest extends IntegrationTestCase
public function testAddUserLongPassword()
{
$login = "geggeqgeqag";
- $this->api->addUser($login, "geqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaeg", "mgeagi@geq.com");
+ $this->api->addUser($login,
+ "geqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaegeqgeagaeg",
+ "mgeagi@geq.com");
$user = $this->api->getUser($login);
$this->assertEquals($login, $user['login']);
}
@@ -245,7 +268,7 @@ class UsersManagerTest extends IntegrationTestCase
// check that the date registered is correct
$this->assertTrue($time <= strtotime($user['date_registered']) && strtotime($user['date_registered']) <= time(),
- "the date_registered " . strtotime($user['date_registered']) . " is different from the time() " . time());
+ "the date_registered " . strtotime($user['date_registered']) . " is different from the time() " . time());
// check that password and token are properly set
$this->assertEquals(60, strlen($user['password']));
@@ -280,7 +303,7 @@ class UsersManagerTest extends IntegrationTestCase
$access = $this->api->getSitesAccessFromUser($login);
$this->assertEquals([
- ['site' => 1, 'access' => 'view'],
+ ['site' => 1, 'access' => 'view'],
], $access);
}
@@ -295,7 +318,8 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser('userLogin2', 'password', 'userlogin2@email.com');
}
- public function test_addUser_shouldNotAllowAdminUsersToCreateUsersWithAccessToSite_ThatAdminUserDoesNotHaveAccessTo()
+ public function test_addUser_shouldNotAllowAdminUsersToCreateUsersWithAccessToSite_ThatAdminUserDoesNotHaveAccessTo(
+ )
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('checkUserHasAdminAccess Fake exception');
@@ -440,17 +464,32 @@ class UsersManagerTest extends IntegrationTestCase
$this->api->addUser("geggeqge632ge56a4qag", "geqgegeagae", "tesggt@tesgt.com");
$this->api->addUser("geggeqgeqagqegg", "geqgeaggggae", "tesgggt@tesgt.com");
- Option::set('UsersManager.lastSeen.gegg4564eqgeqag',$now = time());
+ Option::set('UsersManager.lastSeen.gegg4564eqgeqag', $now = time());
$users = $this->api->getUsers();
$users = $this->_removeNonTestableFieldsFromUsers($users);
- $user1 = array('login' => "gegg4564eqgeqag", 'email' => "tegst@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false, 'last_seen' => Date::getDatetimeFromTimestamp($now));
- $user2 = array('login' => "geggeqge632ge56a4qag", 'email' => "tesggt@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false);
- $user3 = array('login' => "geggeqgeqagqegg", 'email' => "tesgggt@tesgt.com", 'superuser_access' => 0, 'uses_2fa' => false);
+ $user1 = array('login' => "gegg4564eqgeqag",
+ 'email' => "tegst@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false,
+ 'last_seen' => Date::getDatetimeFromTimestamp($now)
+ );
+ $user2 = array('login' => "geggeqge632ge56a4qag",
+ 'email' => "tesggt@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false
+ );
+ $user3 = array('login' => "geggeqgeqagqegg",
+ 'email' => "tesgggt@tesgt.com",
+ 'superuser_access' => 0,
+ 'uses_2fa' => false
+ );
$expectedUsers = array($user1, $user2, $user3);
$this->assertEquals($expectedUsers, $users);
- $this->assertEquals(array($user1), $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag')));
- $this->assertEquals(array($user1, $user2), $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag,geggeqge632ge56a4qag')));
+ $this->assertEquals(array($user1),
+ $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag')));
+ $this->assertEquals(array($user1, $user2),
+ $this->_removeNonTestableFieldsFromUsers($this->api->getUsers('gegg4564eqgeqag,geggeqge632ge56a4qag')));
}
public function testGetUsers_withViewAccess_shouldThrowAnException()
@@ -475,6 +514,10 @@ class UsersManagerTest extends IntegrationTestCase
unset($user['date_registered']);
unset($user['ts_password_modified']);
unset($user['invite_status']);
+ unset($user['invite_expired_at']);
+ unset($user['invite_token']);
+ unset($user['invite_accept_at']);
+ unset($user['invited_by']);
}
return $users;
}
@@ -518,7 +561,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('checkUserHasSomeAdminAccess Fake exception');
- FakeAccess::clearAccess($superUser = false, $admin =array(), $view = array(1));
+ FakeAccess::clearAccess($superUser = false, $admin = array(), $view = array(1));
$this->api->getUserLoginFromUserEmail('tegst@tesgt.com');
}
@@ -527,7 +570,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("nologin", "view", 1);
}
@@ -537,7 +580,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
$this->api->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com");
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("gegg4564eqgeqag", "viewnotknown", 1);
}
@@ -547,7 +590,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ExceptionAccessValues');
$this->api->addUser("gegg4564eqgeqag", "geqgegagae", "tegst@tesgt.com");
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess("gegg4564eqgeqag", "superuser", 1);
}
@@ -556,7 +599,7 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectException(\Exception::class);
$this->expectExceptionMessage('UsersManager_ExceptionUserDoesNotExist');
- FakeAccess::clearAccess($superUser = false, $admin =array(1), $view = array());
+ FakeAccess::clearAccess($superUser = false, $admin = array(1), $view = array());
$this->api->setUserAccess('superusertest', 'view', 1);
}
@@ -769,7 +812,7 @@ class UsersManagerTest extends IntegrationTestCase
$pwd = $this->createCurrentUser();
- FakeAccess::$superUser= false;
+ FakeAccess::$superUser = false;
$this->api->setSuperUserAccess('nologin', false, $pwd);
}
@@ -901,9 +944,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_ConfirmWithPassword');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -917,9 +962,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_CurrentPasswordNotCorrect');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -933,9 +980,11 @@ class UsersManagerTest extends IntegrationTestCase
$this->expectExceptionMessage('UsersManager_CurrentPasswordNotCorrect');
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
// currently logged in is a super user and not "login". therefore the password of "login" won't work
@@ -948,9 +997,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testUpdateUserNoEmail()
{
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -990,9 +1041,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testUpdateUser()
{
$login = "login";
- $user = array('login' => $login,
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => $login,
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -1011,9 +1064,11 @@ class UsersManagerTest extends IntegrationTestCase
public function testGetUserByEmail()
{
- $user = array('login' => "login",
- 'password' => "geqgeagae",
- 'email' => "test@test.com");
+ $user = array(
+ 'login' => "login",
+ 'password' => "geqgeagae",
+ 'email' => "test@test.com"
+ );
$this->api->addUser($user['login'], $user['password'], $user['email']);
@@ -1038,23 +1093,24 @@ class UsersManagerTest extends IntegrationTestCase
$this->addSites(1);
$roles = $this->api->getAvailableRoles();
$expected = array(
- array (
- 'id' => 'view',
- 'name' => 'UsersManager_PrivView',
- 'description' => 'UsersManager_PrivViewDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_70/'
- ), array (
- 'id' => 'write',
- 'name' => 'UsersManager_PrivWrite',
- 'description' => 'UsersManager_PrivWriteDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_26910'
- ),
- array (
- 'id' => 'admin',
- 'name' => 'UsersManager_PrivAdmin',
- 'description' => 'UsersManager_PrivAdminDescription',
- 'helpUrl' => 'https://matomo.org/faq/general/faq_69/',
- )
+ array(
+ 'id' => 'view',
+ 'name' => 'UsersManager_PrivView',
+ 'description' => 'UsersManager_PrivViewDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_70/'
+ ),
+ array(
+ 'id' => 'write',
+ 'name' => 'UsersManager_PrivWrite',
+ 'description' => 'UsersManager_PrivWriteDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_26910'
+ ),
+ array(
+ 'id' => 'admin',
+ 'name' => 'UsersManager_PrivAdmin',
+ 'description' => 'UsersManager_PrivAdminDescription',
+ 'helpUrl' => 'https://matomo.org/faq/general/faq_69/',
+ )
);
$this->assertEquals($expected, $roles);
}
@@ -1063,30 +1119,30 @@ class UsersManagerTest extends IntegrationTestCase
{
$this->addSites(1);
$this->assertSame(array(
- 0 => array(
- 'id' => 'tagmanager_write',
- 'name' => 'UsersManager_PrivWrite',
- 'description' => 'TagManager_CapabilityWriteDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('write', 'admin'),
- 'category' => 'TagManager_TagManager',
- ),
- 1 => array (
- 'id' => 'tagmanager_publish_live_container',
- 'name' => 'TagManager_CapabilityPublishLiveContainer',
- 'description' => 'TagManager_CapabilityPublishLiveContainerDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('admin'),
- 'category' => 'TagManager_TagManager',
- ),
- 2 => array (
- 'id' => 'tagmanager_use_custom_templates',
- 'name' => 'TagManager_CapabilityUseCustomTemplates',
- 'description' => 'TagManager_CapabilityUseCustomTemplateDescription',
- 'helpUrl' => '',
- 'includedInRoles' => array ('admin'),
- 'category' => 'TagManager_TagManager',
- )
+ 0 => array(
+ 'id' => 'tagmanager_write',
+ 'name' => 'UsersManager_PrivWrite',
+ 'description' => 'TagManager_CapabilityWriteDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('write', 'admin'),
+ 'category' => 'TagManager_TagManager',
+ ),
+ 1 => array(
+ 'id' => 'tagmanager_publish_live_container',
+ 'name' => 'TagManager_CapabilityPublishLiveContainer',
+ 'description' => 'TagManager_CapabilityPublishLiveContainerDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('admin'),
+ 'category' => 'TagManager_TagManager',
+ ),
+ 2 => array(
+ 'id' => 'tagmanager_use_custom_templates',
+ 'name' => 'TagManager_CapabilityUseCustomTemplates',
+ 'description' => 'TagManager_CapabilityUseCustomTemplateDescription',
+ 'helpUrl' => '',
+ 'includedInRoles' => array('admin'),
+ 'category' => 'TagManager_TagManager',
+ )
), $this->api->getAvailableCapabilities());
}
@@ -1104,43 +1160,14 @@ class UsersManagerTest extends IntegrationTestCase
$this->assertNotEmpty($user['invite_status']);
}
- public function testInviteUserEmail()
- {
- $view = new View('@UsersManager/_userInviteEmail.twig');
- $view->login = "test";
- $view->emailAddress = "test@test.com";;
- $view->idSite = 1;
- $view->siteName = 'test';
- $view->token = "thisisatoken";
-
- // content line for email body
- $view->content =Piwik::translate('CoreAdminHome_UserInviteSubject',
- ["<strong>test</strong>", "<strong>test</strong>"]);
-
- //notes for email footer
- $view->notes = Piwik::translate('CoreAdminHome_UserInviteNotes', ['test','test']);
- $host = SettingsPiwik::getPiwikUrl();
- $content = <<<END
-<p>General_HelloUser</p>
-<p>CoreAdminHome_UserInviteSubject</p>
-<a target="_blank" href="$host?module=Login&action=acceptInvitation&token=thisisatoken"
->CoreAdminHome_AcceptInvite</a> |
-<a target="_blank" href="$host?module=Login&action=declineInvitation&token=thisisatoken"
->CoreAdminHome_DeclineInvite</a>
-<p><b>Notes:</b>CoreAdminHome_UserInviteNotes</p>
-END;
- $this->assertEquals($content, $view->render());
-
- }
-
-
private function addSites($numberOfSites)
{
$idSites = array();
for ($index = 0; $index < $numberOfSites; $index++) {
- $name = "test" . ($index + 1);
- $idSites[] = APISitesManager::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $name = "test" . ($index + 1);
+ $idSites[] = APISitesManager::getInstance()->addSite($name,
+ array("http://piwik.net", "http://piwik.com/test/"));
}
return $idSites;
@@ -1149,7 +1176,7 @@ END;
public function provideContainerConfig()
{
return array(
- 'Piwik\Access' => new FakeAccess()
+ 'Piwik\Access' => new FakeAccess()
);
}