47b2c1417eeb6ba7c1574ce5746e00c61c298c3f
[civicrm-core.git] / Civi / Codeception / CiviAcceptanceTesterTrait.php
1 <?php
2 namespace Civi\Codeception;
3
4 /**
5 * Trait CiviAcceptanceTesterTrait
6 * Trait for common functions used for Codeception Testing framework
7 * @package Civi\Codeception
8 */
9 trait CiviAcceptanceTesterTrait {
10
11 /**
12 * Parse Parameters, and create generic Civi URL
13 * @param $page
14 * The path and parameters of a CiviCRM page. Ex: "civicrm/dashboard?reset=1".
15 */
16 public function amOnRoute($page) {
17 $params = explode('?', $page);
18 if (empty($params[1])) {
19 $newPage = \CRM_Utils_System::url($page, NULL, FALSE, NULL, FALSE);
20 }
21 else {
22 $newPage = \CRM_Utils_System::url($params[0], $params[1], FALSE, NULL, FALSE);
23 }
24 return $this->amOnPage($newPage);
25 }
26
27 /**
28 * Dispatcher for login to supported plattforms
29 * @param $username
30 * CiviCRM username for the login
31 * @param $password
32 * CiviCRM password for the login
33 */
34 public function login($username, $password) {
35 $config = \CRM_Core_Config::singleton();
36 $handler = array($this, 'loginTo' . $config->userFramework);
37 if (is_callable($handler)) {
38 call_user_func($handler, $username, $password);
39 }
40 else {
41 throw new CRM_Core_Exception("Framework {$config->userFramework} is not supported. Implement loginTo{$config->userFramework}.");
42 }
43 }
44
45 /**
46 * Login to Drupal
47 * @param $username
48 * CiviCRM username for the login
49 * @param $password
50 * CiviCRM password for the login
51 */
52 public function loginToDrupal($username, $password) {
53 $I = $this;
54 $I->amOnPage('/user');
55 $I->fillField("#edit-name", $username);
56 $I->fillField("#edit-pass", $password);
57 $I->click("#edit-submit");
58 $I->see("CiviCRM Home");
59 }
60
61 /**
62 * Login to Joomla
63 * @param $username
64 * CiviCRM username for the login
65 * @param $password
66 * CiviCRM password for the login
67 */
68 public function loginToJoomla($username, $password) {
69 throw new CRM_Core_Exception("loginToJoomla is not implemented yet. Implement a corresponding login function.");
70 }
71
72 /**
73 * Login to Wordpress
74 * @param $username
75 * CiviCRM username for the login
76 * @param $password
77 * CiviCRM password for the login
78 */
79 public function loginToWordpress($username, $password) {
80 throw new CRM_Core_Exception("loginToWordpress is not implemented yet. Implement a corresponding login function.");
81 }
82
83 /**
84 * Login to Backdrop
85 * @param $username
86 * CiviCRM username for the login
87 * @param $password
88 * CiviCRM password for the login
89 */
90 public function loginToBackdrop($username, $password) {
91 throw new CRM_Core_Exception("loginToBackdrop is not implemented yet. Implement a corresponding login function.");
92 }
93
94 /**
95 * Login as Admin User
96 */
97 public function loginAsAdmin() {
98 global $_CV;
99 $this->login($_CV['ADMIN_USER'], $_CV['ADMIN_PASS']);
100 }
101
102 /**
103 * Login as Demo User
104 */
105 public function loginAsDemo() {
106 global $_CV;
107 $this->login($_CV['DEMO_USER'], $_CV['DEMO_PASS']);
108 }
109
110 }