From 0ee5af827e6ac10b6a8c2ce942e19de53ba9e49c Mon Sep 17 00:00:00 2001
From: Nancy Butler <42977925+mantis-toboggan-md@users.noreply.github.com>
Date: Tue, 21 May 2024 14:52:31 -0700
Subject: [PATCH] fix container monitoring checkbox and add unit tests
---
pkg/aks/components/CruAks.vue | 16 ++++--
pkg/aks/components/__tests__/CruAks.test.ts | 57 ++++++++++++++++++++-
2 files changed, 67 insertions(+), 6 deletions(-)
diff --git a/pkg/aks/components/CruAks.vue b/pkg/aks/components/CruAks.vue
index d890a2c1ab7..45ca971d3a0 100644
--- a/pkg/aks/components/CruAks.vue
+++ b/pkg/aks/components/CruAks.vue
@@ -157,7 +157,6 @@ export default defineComponent({
}
this.config = this.normanCluster.aksConfig;
this.nodePools = this.normanCluster.aksConfig.nodePools;
- this.containerMonitoring = !!(this.config.logAnalyticsWorkspaceGroup || this.config.logAnalyticsWorkspaceName);
this.setAuthorizedIPRanges = !!(this.config?.authorizedIpRanges || []).length;
this.nodePools.forEach((pool: AKSNodePool) => {
this.$set(pool, '_id', randomStr());
@@ -201,7 +200,6 @@ export default defineComponent({
loadingVersions: false,
loadingVmSizes: false,
loadingVirtualNetworks: false,
- containerMonitoring: false,
setAuthorizedIPRanges: false,
fvFormRuleSets: [{
path: 'name',
@@ -793,6 +791,13 @@ export default defineComponent({
delete this.config.privateDnsZone;
delete this.config.userAssignedIdentity;
}
+ },
+
+ 'config.monitoring'(neu: boolean) {
+ if (!neu) {
+ this.$set(this.config, 'logAnalyticsWorkspaceGroup', null);
+ this.$set(this.config, 'logAnalyticsWorkspaceName', null);
+ }
}
},
@@ -1179,20 +1184,22 @@ export default defineComponent({
-
+
@@ -1200,6 +1207,7 @@ export default defineComponent({
v-model="config.logAnalyticsWorkspaceName"
:mode="mode"
label-key="aks.logAnalyticsWorkspaceName.label"
+ data-testid="aks-log-analytics-workspace-name-input"
/>
diff --git a/pkg/aks/components/__tests__/CruAks.test.ts b/pkg/aks/components/__tests__/CruAks.test.ts
index 3b55cd22651..44e9d02aad8 100644
--- a/pkg/aks/components/__tests__/CruAks.test.ts
+++ b/pkg/aks/components/__tests__/CruAks.test.ts
@@ -368,6 +368,37 @@ describe('aks provisioning form', () => {
expect(wrapper.vm.config.virtualNetworkResourceGroup).toBe(virtualNetworkResourceGroup);
});
+ it('should set config.monitoring to \'true\' and show log anaytics workspace name and log analytics workspace group inputs when the monitoring checkbox is checked', async() => {
+ const config = {
+ dnsPrefix: 'abc-123', resourceGroup: 'abc', clusterName: 'abc'
+ };
+ const wrapper = shallowMount(CruAks, {
+ propsData: {
+ value: {}, mode: 'edit', config
+ },
+ ...requiredSetup()
+ });
+
+ await setCredential(wrapper, config);
+ let logAnalyticsWorkspaceNameInput = wrapper.find('[data-testid="aks-log-analytics-workspace-name-input"]');
+ let logAnalyticsWorkspaceGroupInput = wrapper.find('[data-testid="aks-log-analytics-workspace-group-input"]');
+ const monitoringCheckbox = wrapper.find('[data-testid="aks-monitoring-checkbox"]');
+
+ expect(monitoringCheckbox.props().value).toBe(false);
+ expect(logAnalyticsWorkspaceNameInput.exists()).toBe(false);
+ expect(logAnalyticsWorkspaceGroupInput.exists()).toBe(false);
+ expect(wrapper.vm.$data.config.monitoring).toBeFalsy();
+
+ monitoringCheckbox.vm.$emit('input', true);
+ await wrapper.vm.$nextTick();
+ expect(wrapper.vm.$data.config.monitoring).toBe(true);
+ logAnalyticsWorkspaceNameInput = wrapper.find('[data-testid="aks-log-analytics-workspace-name-input"]');
+ logAnalyticsWorkspaceGroupInput = wrapper.find('[data-testid="aks-log-analytics-workspace-group-input"]');
+ expect(monitoringCheckbox.props().value).toBe(true);
+ expect(logAnalyticsWorkspaceNameInput.isVisible()).toBe(true);
+ expect(logAnalyticsWorkspaceGroupInput.isVisible()).toBe(true);
+ });
+
it('should clear virtualNetwork, virtualNetworkResourceGroup, and subnet when the \'none\' virtual network option is selected', async() => {
const config = {
dnsPrefix: 'abc-123', resourceGroup: 'abc', clusterName: 'abc'
@@ -405,7 +436,6 @@ describe('aks provisioning form', () => {
const config = {
dnsPrefix: 'abc-123', resourceGroup: 'abc', clusterName: 'abc', kubernetesVersion: originalVersion, nodePools
};
-
const wrapper = shallowMount(CruAks, {
propsData: {
value: {}, mode: 'edit', config
@@ -414,7 +444,6 @@ describe('aks provisioning form', () => {
});
await setCredential(wrapper, config);
-
wrapper.setData({ config: { ...config, kubernetesVersion: newVersion } });
await wrapper.vm.$nextTick();
const pools = wrapper.vm.nodePools;
@@ -423,4 +452,28 @@ describe('aks provisioning form', () => {
expect(pool.orchestratorVersion).toBe(pool._isNewOrUnprovisioned ? newVersion : originalVersion);
});
});
+
+ it('should clear config.logAnalyticsWorkspaceName and config.logAnalyticsWorkspaceGroup when the monitoring checkbox is unchecked', async() => {
+ const config = {
+ dnsPrefix: 'abc-123', resourceGroup: 'abc', clusterName: 'abc', monitoring: true, logAnalyticsWorkspaceGroup: 'abc', logAnalyticsWorkspaceName: 'def'
+ };
+ const wrapper = shallowMount(CruAks, {
+ propsData: {
+ value: {}, mode: 'edit', config
+ },
+ ...requiredSetup()
+ });
+
+ await setCredential(wrapper, config);
+
+ const monitoringCheckbox = wrapper.find('[data-testid="aks-monitoring-checkbox"]');
+
+ expect(monitoringCheckbox.props().value).toBe(true);
+
+ monitoringCheckbox.vm.$emit('input', false);
+ await wrapper.vm.$nextTick();
+ expect(wrapper.vm.$data.config.monitoring).toBeFalsy();
+ expect(wrapper.vm.$data.config.logAnalyticsWorkspaceGroup).toBeNull();
+ expect(wrapper.vm.$data.config.logAnalyticsWorkspaceName).toBeNull();
+ });
});