typescript: Convert network_namserver test to ts
Fixed: b/367735615
Change-Id: Ia2e8d14f7f79d323f9efad803d9eae4aabb6ecc0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5892899
Reviewed-by: Chad Duffin <chadduffin@chromium.org>
Commit-Queue: Gavin Williams <gavinwill@chromium.org>
Reviewed-by: Wes Okuhara <wesokuhara@google.com>
Cr-Commit-Position: refs/heads/main@{#1362057}
diff --git a/chrome/test/data/webui/chromeos/BUILD.gn b/chrome/test/data/webui/chromeos/BUILD.gn
index f06133f..37073e2 100644
--- a/chrome/test/data/webui/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/chromeos/BUILD.gn
@@ -233,7 +233,7 @@
"network/network_ip_config_test.js",
"network/network_list_item_test.js",
"network/network_list_test.js",
- "network/network_nameservers_test.js",
+ "network/network_nameservers_test.ts",
"network/network_password_input_test.js",
"network/network_property_list_mojo_test.js",
"network/network_proxy_exclusions_test.js",
diff --git a/chrome/test/data/webui/chromeos/network/network_nameservers_test.js b/chrome/test/data/webui/chromeos/network/network_nameservers_test.js
deleted file mode 100644
index 086a007a..0000000
--- a/chrome/test/data/webui/chromeos/network/network_nameservers_test.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'chrome://os-settings/strings.m.js';
-import 'chrome://resources/ash/common/network/network_nameservers.js';
-
-import {ConnectionStateType, PolicySource} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js';
-import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
-
-suite('NetworkNameserversTest', function() {
- /** @type {!NetworkNameservers|undefined} */
- let nameservers;
-
- setup(function() {
- nameservers = document.createElement('network-nameservers');
- document.body.appendChild(nameservers);
- flush();
- });
-
- test('Select nameservers', async () => {
- assertTrue(!!nameservers.$.nameserverType);
-
- // Default nameserver type is 'automatic'.
- assertEquals('automatic', nameservers.$.nameserverType.selected);
- assertTrue(nameservers.$$('cr-radio-button[name=automatic]').checked);
- assertFalse(nameservers.$$('cr-radio-button[name=google]').checked);
- assertFalse(nameservers.$$('cr-radio-button[name=custom]').checked);
-
- nameservers.$.nameserverType.selected = 'google';
- assertFalse(nameservers.$$('cr-radio-button[name=automatic]').checked);
- assertTrue(nameservers.$$('cr-radio-button[name=google]').checked);
- assertFalse(nameservers.$$('cr-radio-button[name=custom]').checked);
-
- nameservers.$.nameserverType.selected = 'custom';
- assertFalse(nameservers.$$('cr-radio-button[name=automatic]').checked);
- assertFalse(nameservers.$$('cr-radio-button[name=google]').checked);
- assertTrue(nameservers.$$('cr-radio-button[name=custom]').checked);
- });
-
- test('Disabled UI state', function() {
- const radioGroup = nameservers.$.nameserverType;
- assertFalse(radioGroup.disabled);
-
- nameservers.disabled = true;
-
- assertTrue(radioGroup.disabled);
- });
-
- test(
- 'Do not apply observed changes for static config type when connected',
- function() {
- const ipAddress = '8.8.8.2';
- nameservers.$.nameserverType.selected = 'custom';
- nameservers.managedProperties = {
- ipAddressConfigType: {
- activeValue: 'DHCP',
- },
- staticIpConfig: {
- nameServers: {
- activeValue: ['8.8.8.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
- },
- },
- connectionState: ConnectionStateType.kConnected,
- nameServersConfigType: {
- activeValue: 'Static',
- },
- guid: 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
- };
- flush();
-
- assertEquals(
- ipAddress, nameservers.$$('cr-input[id=nameserver0]').value);
-
- nameservers.managedProperties = {
- ipAddressConfigType: {
- activeValue: 'DHCP',
- },
- staticIpConfig: {
- nameServers: {
- activeValue: ['0.0.0.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
- },
- },
- connectionState: ConnectionStateType.kConnected,
- nameServersConfigType: {
- activeValue: 'Static',
- },
- guid: 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
- };
- flush();
-
- assertEquals(
- ipAddress, nameservers.$$('cr-input[id=nameserver0]').value);
- });
-});
diff --git a/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts b/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts
new file mode 100644
index 0000000..70bd94d
--- /dev/null
+++ b/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts
@@ -0,0 +1,120 @@
+// Copyright 2020 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://os-settings/strings.m.js';
+import 'chrome://resources/ash/common/network/network_nameservers.js';
+
+import type {CrInputElement} from 'chrome://resources/ash/common/cr_elements/cr_input/cr_input.js';
+import type {CrRadioButtonElement} from 'chrome://resources/ash/common/cr_elements/cr_radio_button/cr_radio_button.js';
+import type {CrRadioGroupElement} from 'chrome://resources/ash/common/cr_elements/cr_radio_group/cr_radio_group.js';
+import type {NetworkNameserversElement} from 'chrome://resources/ash/common/network/network_nameservers.js';
+import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js';
+import {IPConfigType, NetworkType, PolicySource} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js';
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
+
+suite('NetworkNameserversTest', () => {
+ let nameservers: NetworkNameserversElement|undefined;
+
+ setup(() => {
+ nameservers = document.createElement('network-nameservers');
+ document.body.appendChild(nameservers);
+ flush();
+ });
+
+ test('Select nameservers', async () => {
+ assertTrue(!!nameservers);
+ const nameserverTypeRadioGroup =
+ nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+ '#nameserverType');
+ assertTrue(!!nameserverTypeRadioGroup);
+
+ // Default nameserver type is 'automatic'.
+ const automaticButton =
+ nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+ 'cr-radio-button[name=automatic]');
+ assertTrue(!!automaticButton);
+ const googleButton =
+ nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+ 'cr-radio-button[name=google]');
+ assertTrue(!!googleButton);
+ const customButton =
+ nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+ 'cr-radio-button[name=custom]');
+ assertTrue(!!customButton);
+
+ assertEquals('automatic', nameserverTypeRadioGroup.selected);
+ assertTrue(automaticButton.checked);
+ assertFalse(googleButton.checked);
+ assertFalse(customButton.checked);
+
+ nameserverTypeRadioGroup.selected = 'google';
+ assertFalse(automaticButton.checked);
+ assertTrue(googleButton.checked);
+ assertFalse(customButton.checked);
+
+ nameserverTypeRadioGroup.selected = 'custom';
+ assertFalse(automaticButton.checked);
+ assertFalse(googleButton.checked);
+ assertTrue(customButton.checked);
+ });
+
+ test('Disabled UI state', () => {
+ assertTrue(!!nameservers);
+ const nameserverTypeRadioGroup =
+ nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+ '#nameserverType');
+ assertTrue(!!nameserverTypeRadioGroup);
+ assertFalse(nameserverTypeRadioGroup.disabled);
+
+ nameservers.disabled = true;
+
+ assertTrue(nameserverTypeRadioGroup.disabled);
+ });
+
+ test(
+ 'Do not apply observed changes for static config type when connected',
+ () => {
+ assertTrue(!!nameservers);
+ const nameserverTypeRadioGroup =
+ nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+ '#nameserverType');
+ assertTrue(!!nameserverTypeRadioGroup);
+
+ const ipAddress = '8.8.8.2';
+ nameserverTypeRadioGroup.selected = 'custom';
+
+ const managedProperties = OncMojo.getDefaultManagedProperties(
+ NetworkType.kEthernet, 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
+ 'name');
+ managedProperties.staticIpConfig = {
+ gateway: undefined,
+ ipAddress: undefined,
+ nameServers: {
+ activeValue: ['8.8.8.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
+ policySource: PolicySource.kNone,
+ policyValue: undefined,
+ },
+ routingPrefix: undefined,
+ type: IPConfigType.kIPv4,
+ webProxyAutoDiscoveryUrl: undefined,
+ };
+ managedProperties.ipAddressConfigType.activeValue = 'DHCP';
+ managedProperties.nameServersConfigType.activeValue = 'Static';
+ nameservers.managedProperties = managedProperties;
+ flush();
+
+ const customNameServerInput =
+ nameservers.shadowRoot!.querySelector<CrInputElement>(
+ 'cr-input[id=nameserver0]');
+ assertTrue(!!customNameServerInput);
+ assertEquals(ipAddress, customNameServerInput.value);
+
+ managedProperties.staticIpConfig.nameServers!.activeValue =
+ ['0.0.0.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'];
+ flush();
+
+ assertEquals(ipAddress, customNameServerInput.value);
+ });
+});
diff --git a/chrome/test/data/webui/cr_components/chromeos/BUILD.gn b/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
index a098e36..5070331 100644
--- a/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
@@ -66,7 +66,6 @@
"network/network_ip_config_test.js",
"network/network_list_item_test.js",
"network/network_list_test.js",
- "network/network_nameservers_test.js",
"network/network_password_input_test.js",
"network/network_property_list_mojo_test.js",
"network/network_proxy_exclusions_test.js",