Skip to content
Snippets Groups Projects
Commit 4f05aeab authored by Yutong Li's avatar Yutong Li Committed by Yas Naoi
Browse files

Issue #3246044 by yutong.li, yas: Add test cases for OpenStack Admin Setting forms (Settings)

parent 8607db3f
No related branches found
No related tags found
No related merge requests found
<?php
namespace Drupal\Tests\openstack\Functional\Config;
use Drupal\Tests\openstack\Functional\OpenStackTestBase;
use Drupal\Tests\openstack\Traits\OpenStackTestFormDataTrait;
/**
* Test Case class for OpenStack Admin Setting forms.
*
* @group OpenStack
*/
class OpenStackAdminSettings extends OpenStackTestBase {
use OpenStackTestFormDataTrait;
public const OPENSTACK_ADMIN_SETTINGS_REPEAT_COUNT = 2;
/**
* Get permissions of login user.
*
* @return array
* permissions of login user.
*/
protected function getPermissions(): array {
return [
'administer openstack',
'administer site configuration',
];
}
/**
* Test for OpenStackAdminSettings.
*
* @param string $setting_type
* The setting type id.
* @param array $edit
* The array of input data.
*/
protected function runOpenStackAdminSettings($setting_type, array $edit): void {
$this->drupalGet("/admin/config/services/cloud/openstack/{$setting_type}");
$this->assertNoErrorMessage();
$this->submitForm(
$edit,
$this->t('Save')
);
$this->assertNoErrorMessage();
}
/**
* Test OpenStack Admin Setting forms on Settings.
*/
public function testOpenStackAdminSettings(): void {
$edit = $this->createOpenStackSettingsFormData(self::OPENSTACK_ADMIN_SETTINGS_REPEAT_COUNT);
for ($i = 0; $i < self::OPENSTACK_ADMIN_SETTINGS_REPEAT_COUNT; $i++) {
$edit[$i] = array_intersect_key($edit[$i], array_flip(
(array) array_rand($edit[$i], random_int(1, count($edit[$i])))
));
$this->runOpenStackAdminSettings('settings', $edit[$i]);
}
}
}
......@@ -345,4 +345,40 @@ trait OpenStackTestFormDataTrait {
return $flavors;
}
/**
* Get the unused volume criteria options on OpenStack Settings.
*
* @return array
* Array of Unused volume criteria.
*/
protected function getUnusedVolumeCriteriaOptions(): array {
return [30, 60, 90, 180, 365];
}
/**
* Create an array of random input data for Settings.
*
* @return array
* The array including random input data.
*/
public function createOpenStackSettingsFormData($repeat_count = 1): array {
$config_factory = \Drupal::configFactory();
$config = $config_factory->getEditable('openstack.settings');
$unused_volume_criteria = $this->getUnusedVolumeCriteriaOptions();
$edit = [];
for ($i = 0; $i < $repeat_count; $i++) {
$edit[] = [
'openstack_test_mode' => !$config->get('openstack_test_mode'),
'openstack_unused_volume_criteria' => $unused_volume_criteria[array_rand($unused_volume_criteria)],
'openstack_instance_terminate' => !$config->get('openstack_instance_terminate'),
'openstack_update_resources_queue_cron_time' => random_int(1, 9999),
'openstack_queue_limit' => random_int(1, 50),
];
}
return $edit;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment