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

Issue #3245650 by yutong.li, yas, Xiaohua Guan: Add test cases for K8s Admin...

Issue #3245650 by yutong.li, yas, Xiaohua Guan: Add test cases for K8s Admin Setting forms (Settings)
parent 45852e0b
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ use Drupal\Tests\aws_cloud\Traits\AwsCloudTestFormDataTrait;
*
* @group AWS Cloud
*/
class AwsCloudAdminSettings extends AwsCloudTestBase {
class AwsCloudAdminSettingsTest extends AwsCloudTestBase {
use AwsCloudTestFormDataTrait;
......
......@@ -219,7 +219,6 @@ class K8sAdminSettings extends ConfigFormBase {
$config = $this->configFactory()->getEditable('k8s.settings');
$form_state->cleanValues();
foreach ($form_state->getValues() ?: [] as $key => $value) {
$config->set($key, Html::escape($value));
if ($key === 'k8s_cloud_config_icon') {
$fileStorage = $this->entityTypeManager->getStorage('file');
......@@ -235,6 +234,8 @@ class K8sAdminSettings extends ConfigFormBase {
}
continue;
}
$config->set($key, Html::escape($value));
}
$config->save();
......
<?php
namespace Drupal\Tests\k8s\Functional\Config;
use Drupal\Tests\k8s\Functional\K8sTestBase;
use Drupal\Tests\k8s\Traits\K8sTestFormDataTrait;
/**
* Test Case class for K8s Admin Setting forms.
*
* @group K8s
*/
class K8sAdminSettingsTest extends K8sTestBase {
use K8sTestFormDataTrait;
public const K8S_ADMIN_SETTINGS_REPEAT_COUNT = 2;
/**
* Get permissions of login user.
*
* @return array
* permissions of login user.
*/
protected function getPermissions(): array {
return [
'administer k8s',
'administer site configuration',
];
}
/**
* Test for K8sAdminSettings.
*
* @param string $setting_type
* The setting type id.
* @param array $edit
* The array of input data.
*/
protected function runK8sAdminSettings($setting_type, array $edit): void {
$this->drupalGet("/admin/config/services/cloud/k8s/{$setting_type}");
$this->assertNoErrorMessage();
$this->submitForm(
$edit,
$this->t('Save')
);
$this->assertNoErrorMessage();
}
/**
* Test K8s Admin Settings form on Notifications.
*/
public function testK8sAdminNotificationsSettings(): void {
$edit = $this->createK8sCloudNotificationsFormData(self::K8S_ADMIN_SETTINGS_REPEAT_COUNT);
for ($i = 0; $i < self::K8S_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->runK8sAdminSettings('notifications', $edit[$i]);
}
}
/**
* Test K8s Admin Settings form on Settings.
*
* @throws \Exception
*/
public function testK8sAdminSettings(): void {
$edit = $this->createK8sCloudSettingsFormData(self::K8S_ADMIN_SETTINGS_REPEAT_COUNT);
for ($i = 0; $i < self::K8S_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->runK8sAdminSettings('settings', $edit[$i]);
}
}
}
......@@ -2107,4 +2107,67 @@ EOS;
return $schedules;
}
/**
* Create an array of random input data for Notifications.
*
* @return array
* The array including random input data.
*/
public function createK8sCloudNotificationsFormData($repeat_count = 1): array {
$edit = [];
for ($i = 0; $i < $repeat_count; $i++) {
$edit[] = [
'k8s_launch_template_notification_request_emails' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_request_subject' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_request_msg' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_launch_template_request_info' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_approved_subject' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_approved_msg' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_restore_subject' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_restore_msg' => $this->random->name(10, TRUE),
'k8s_launch_template_notification_launch_template_info' => $this->random->name(10, TRUE),
];
}
return $edit;
}
/**
* Create an array of random input data for Settings.
*
* @return array
* The array including random input data.
*
* @throws \Exception
*/
public function createK8sCloudSettingsFormData($repeat_count = 1): array {
$items_per_page = $this->getItemsPerPage();
$edit = [];
for ($i = 0; $i < $repeat_count; $i++) {
$edit[] = [
'k8s_js_refresh_interval' => random_int(1, 9999),
'k8s_update_pricing_data_cache' => array_rand([TRUE, FALSE]),
'k8s_view_expose_items_per_page' => array_rand([TRUE, FALSE]),
'k8s_view_items_per_page' => $items_per_page[array_rand($items_per_page)],
'k8s_update_resources_queue_cron_time' => random_int(1, 9999),
'k8s_queue_limit' => random_int(1, 50),
'k8s_yaml_file_extensions' => $this->random->name(10, TRUE),
];
}
return $edit;
}
/**
* Get the items per page on Pager options, Views, K8s Settings.
*
* @return array
* Array of items per page.
*/
private function getItemsPerPage(): array {
return [10, 15, 20, 25, 50, 100];
}
}
......@@ -10,7 +10,7 @@ use Drupal\Tests\openstack\Traits\OpenStackTestFormDataTrait;
*
* @group OpenStack
*/
class OpenStackAdminSettings extends OpenStackTestBase {
class OpenStackAdminSettingsTest extends OpenStackTestBase {
use OpenStackTestFormDataTrait;
......
......@@ -10,7 +10,7 @@ use Drupal\Tests\vmware\Traits\VmwareTestFormDataTrait;
*
* @group VMware
*/
class VmwareAdminSettings extends VmwareTestBase {
class VmwareAdminSettingsTest extends VmwareTestBase {
use VmwareTestFormDataTrait;
......
......@@ -12,7 +12,7 @@ use Drupal\Component\Utility\Random;
*
* @group Cloud
*/
class CloudAdminSettings extends CloudTestBase {
class CloudAdminSettingsTest extends CloudTestBase {
use CloudTestFormDataTrait;
......
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