Merge pull request #16469 from civicrm/5.22
[civicrm-core.git] / tests / phpunit / api / v3 / MailSettingsTest.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 * Class api_v3_MailSettingsTest
14 *
15 * @group headless
16 */
17 class api_v3_MailSettingsTest extends CiviUnitTestCase {
18
19 protected $_apiversion = 3;
20
21 protected $params;
22
23 protected $id;
24
25 public $DBResetRequired = FALSE;
26
27 public function setUp() {
28 $this->params = [
29 'domain_id' => 1,
30 'name' => "my mail setting",
31 'domain' => 'setting.com',
32 'localpart' => 'civicrm+',
33 'server' => "localhost",
34 'username' => 'sue',
35 'password' => 'pass',
36 'is_default' => 1,
37 ];
38 parent::setUp();
39 $this->useTransaction(TRUE);
40 }
41
42 /**
43 * Test creation.
44 *
45 * @param int $version
46 *
47 * @dataProvider versionThreeAndFour
48 */
49 public function testCreateMailSettings($version) {
50 $this->_apiversion = $version;
51 $this->callAPISuccessGetCount('mail_settings', [], 1);
52 $result = $this->callAPIAndDocument('MailSettings', 'create', $this->params, __FUNCTION__, __FILE__);
53 $this->assertEquals(1, $result['count']);
54 $this->assertNotNull($result['values'][$result['id']]['id']);
55 $this->callAPISuccess('MailSettings', 'delete', ['id' => $result['id']]);
56 $this->callAPISuccessGetCount('mail_settings', [], 1);
57 }
58
59 /**
60 * Test caches cleared adequately.
61 *
62 * @param int $version
63 *
64 * @dataProvider versionThreeAndFour
65 */
66 public function testCreateUpdateMailSettings($version) {
67 $this->_apiversion = $version;
68 $result = $this->callAPISuccess('MailSettings', 'create', $this->params);
69 $this->assertEquals('setting.com', CRM_Core_BAO_MailSettings::defaultDomain());
70 $this->callAPISuccess('mail_settings', 'create', ['id' => $result['id'], 'domain' => 'updated.com']);
71 $this->assertEquals('updated.com', CRM_Core_BAO_MailSettings::defaultDomain());
72 $this->callAPISuccess('MailSettings', 'delete', ['id' => $result['id']]);
73 $this->callAPISuccessGetCount('mail_settings', [], 1);
74 }
75
76 /**
77 * Test get method.
78 *
79 * @param int $version
80 *
81 * @dataProvider versionThreeAndFour
82 */
83 public function testGetMailSettings($version) {
84 $this->_apiversion = $version;
85 $this->callAPIAndDocument('MailSettings', 'create', $this->params, __FUNCTION__, __FILE__);
86 $result = $this->callAPIAndDocument('MailSettings', 'get', $this->params, __FUNCTION__, __FILE__);
87 $this->assertEquals(1, $result['count']);
88 $this->assertNotNull($result['values'][$result['id']]['id']);
89 $this->callAPISuccess('MailSettings', 'delete', ['id' => $result['id']]);
90 $this->callAPISuccessGetCount('mail_settings', [], 1);
91 }
92
93 /**
94 * @param int $version
95 *
96 * @dataProvider versionThreeAndFour
97 */
98 public function testDeleteMailSettings($version) {
99 $this->_apiversion = $version;
100 $this->callAPIAndDocument('MailSettings', 'create', $this->params, __FUNCTION__, __FILE__);
101 $entity = $this->callAPISuccess('MailSettings', 'get', $this->params);
102 $this->assertEquals('setting.com', $entity['values'][$entity['id']]['domain']);
103 $this->callAPIAndDocument('MailSettings', 'delete', ['id' => $entity['id']], __FUNCTION__, __FILE__);
104 $checkDeleted = $this->callAPISuccess('MailSettings', 'get', []);
105 $this->assertEquals('EXAMPLE.ORG', $checkDeleted['values'][$checkDeleted['id']]['domain']);
106 }
107
108 /**
109 * Test chained delete.
110 *
111 * @param int $version
112 *
113 * @dataProvider versionThreeAndFour
114 */
115 public function testGetMailSettingsChainDelete($version) {
116 $this->_apiversion = $version;
117 $description = "Demonstrates get + delete in the same call.";
118 $subFile = 'ChainedGetDelete';
119 $params = [
120 'name' => "delete this setting",
121 'api.MailSettings.delete' => 1,
122 ];
123 $this->callAPISuccess('MailSettings', 'create', ['name' => "delete this setting"] + $this->params);
124 $result = $this->callAPIAndDocument('MailSettings', 'get', $params, __FUNCTION__, __FILE__, $description, $subFile);
125 $this->assertEquals(0, $this->callAPISuccess('MailSettings', 'getcount', ['name' => "delete this setting"]));
126 }
127
128 }