Skip to content

Commit 702ee48

Browse files
change: [UIE-9888] - Make firewall selection mandatory while creating linode and its interfaces
1 parent 0664a55 commit 702ee48

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+627
-154
lines changed

packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { linodeFactory } from '@linode/utilities';
2-
import { imageFactory } from '@src/factories';
2+
import { firewallFactory, imageFactory } from '@src/factories';
3+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
34
import { mockGetAllImages } from 'support/intercepts/images';
45
import { ui } from 'support/ui';
6+
import { linodeCreatePage } from 'support/ui/pages';
57
import { apiMatcher } from 'support/util/intercepts';
68
import { randomLabel, randomNumber, randomString } from 'support/util/random';
79
import { chooseRegion } from 'support/util/regions';
@@ -20,8 +22,14 @@ const mockImage = imageFactory.build({
2022
label: randomLabel(),
2123
});
2224

25+
const mockFirewall = firewallFactory.build({
26+
id: randomNumber(),
27+
label: randomLabel(),
28+
});
29+
2330
const createLinodeWithImageMock = (url: string, preselectedImage: boolean) => {
2431
mockGetAllImages([mockImage]).as('mockImage');
32+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
2533

2634
cy.intercept('POST', apiMatcher('linode/instances'), (req) => {
2735
req.reply({
@@ -52,6 +60,11 @@ const createLinodeWithImageMock = (url: string, preselectedImage: boolean) => {
5260
cy.findByText('Shared CPU').click();
5361
cy.get('[id="g6-nanode-1"][type="radio"]').click();
5462
cy.get('[id="root-password"]').type(randomString(32));
63+
// Select a firewall
64+
linodeCreatePage.selectFirewall(
65+
mockFirewall.label,
66+
'Public Interface Firewall'
67+
);
5568

5669
ui.button
5770
.findByTitle('Create Linode')

packages/manager/cypress/e2e/core/linodes/alerts-create.spec.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,33 @@ import { regionAvailabilityFactory, regionFactory } from '@linode/utilities';
22
import { mockGetAccountSettings } from 'support/intercepts/account';
33
import { mockGetAlertDefinition } from 'support/intercepts/cloudpulse';
44
import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags';
5+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
56
import { interceptCreateLinode } from 'support/intercepts/linodes';
67
import {
78
mockGetRegionAvailability,
89
mockGetRegions,
910
} from 'support/intercepts/regions';
1011
import { ui } from 'support/ui';
11-
import { randomLabel, randomString } from 'support/util/random';
12+
import { linodeCreatePage } from 'support/ui/pages';
13+
import { randomLabel, randomNumber, randomString } from 'support/util/random';
1214

13-
import { accountSettingsFactory, alertFactory } from 'src/factories';
15+
import {
16+
accountSettingsFactory,
17+
alertFactory,
18+
firewallFactory,
19+
} from 'src/factories';
1420
import {
1521
ALERTS_BETA_MODE_BANNER_TEXT,
1622
ALERTS_BETA_MODE_BUTTON_TEXT,
1723
ALERTS_LEGACY_MODE_BANNER_TEXT,
1824
ALERTS_LEGACY_MODE_BUTTON_TEXT,
1925
} from 'src/features/Linodes/constants';
2026

27+
const mockFirewall = firewallFactory.build({
28+
id: randomNumber(),
29+
label: randomLabel(),
30+
});
31+
2132
describe('Create flow when beta alerts enabled by region and feature flag', function () {
2233
beforeEach(() => {
2334
const mockEnabledRegion = regionFactory.build({
@@ -54,6 +65,7 @@ describe('Create flow when beta alerts enabled by region and feature flag', func
5465
interfaces_for_new_linodes: 'legacy_config_default_but_linode_allowed',
5566
});
5667
mockGetAccountSettings(mockInitialAccountSettings).as('getSettings');
68+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
5769
});
5870

5971
it('Alerts panel becomes visible after switching to region w/ alerts enabled', function () {
@@ -88,6 +100,11 @@ describe('Create flow when beta alerts enabled by region and feature flag', func
88100
const enabledRegion = this.mockRegions[0];
89101
mockGetRegionAvailability(enabledRegion.id, []).as('getRegionAvailability');
90102
ui.regionSelect.find().type(`${enabledRegion.label}{enter}`);
103+
// Select a firewall
104+
linodeCreatePage.selectFirewall(
105+
mockFirewall.label,
106+
'Public Interface Firewall'
107+
);
91108

92109
// legacy alerts panel appears
93110
cy.wait('@getRegionAvailability');
@@ -208,6 +225,11 @@ describe('Create flow when beta alerts enabled by region and feature flag', func
208225
const enabledRegion = this.mockRegions[0];
209226
mockGetRegionAvailability(enabledRegion.id, []).as('getRegionAvailability');
210227
ui.regionSelect.find().type(`${enabledRegion.label}{enter}`);
228+
// Select a firewall
229+
linodeCreatePage.selectFirewall(
230+
mockFirewall.label,
231+
'Public Interface Firewall'
232+
);
211233

212234
// legacy alerts panel appears
213235
cy.wait('@getRegionAvailability');
@@ -437,6 +459,11 @@ describe('Create flow when beta alerts enabled by region and feature flag', func
437459
'getRegionAvailability'
438460
);
439461
ui.regionSelect.find().type(`${disabledRegion.label}{enter}`);
462+
// Select a firewall
463+
linodeCreatePage.selectFirewall(
464+
mockFirewall.label,
465+
'Public Interface Firewall'
466+
);
440467

441468
cy.wait('@getRegionAvailability');
442469
// enter plan and password form fields to enable "View Code Snippets" button

packages/manager/cypress/e2e/core/linodes/clone-linode.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { LINODE_CREATE_TIMEOUT } from 'support/constants/linodes';
2020
import { mockGetLinodeConfigs } from 'support/intercepts/configs';
2121
import { interceptEvents } from 'support/intercepts/events';
2222
import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags';
23+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
2324
import {
2425
interceptCloneLinode,
2526
mockCloneLinode,
@@ -44,6 +45,8 @@ import {
4445
} from 'support/util/random';
4546
import { chooseRegion, extendRegion } from 'support/util/regions';
4647

48+
import { firewallFactory } from 'src/factories';
49+
4750
import type { Linode } from '@linode/api-v4';
4851

4952
/**
@@ -195,8 +198,13 @@ describe('clone linode', () => {
195198
id: mockLinode.id + 1,
196199
label: newLinodeLabel,
197200
};
201+
const mockFirewall = firewallFactory.build({
202+
id: randomNumber(),
203+
label: randomLabel(),
204+
});
198205

199206
mockGetVLANs([mockVlan]);
207+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
200208
mockCreateLinode(mockLinode).as('createLinode');
201209
mockGetLinodeDetails(mockLinode.id, mockLinode).as('getLinode');
202210
mockGetLinodeVolumes(clonedLinode.id, [mockVolume]).as('getLinodeVolumes');
@@ -229,6 +237,8 @@ describe('clone linode', () => {
229237
.type(mockVlan.cidr_block);
230238
});
231239

240+
// Select a firewall
241+
linodeCreatePage.selectFirewall(mockFirewall.label, 'Assign Firewall');
232242
// Confirm that VLAN attachment is listed in summary, then create Linode.
233243
cy.get('[data-qa-linode-create-summary]').scrollIntoView();
234244
cy.get('[data-qa-linode-create-summary]').within(() => {

packages/manager/cypress/e2e/core/linodes/create-linode-blackwell.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
regionFactory,
66
} from '@linode/utilities';
77
import { LINODE_CREATE_TIMEOUT } from 'support/constants/linodes';
8+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
89
import {
910
mockCreateLinode,
1011
mockGetLinodeTypes,
@@ -14,7 +15,11 @@ import {
1415
mockGetRegions,
1516
} from 'support/intercepts/regions';
1617
import { ui } from 'support/ui';
18+
import { linodeCreatePage } from 'support/ui/pages';
1719
import { randomLabel, randomString } from 'support/util/random';
20+
import { randomNumber } from 'support/util/random';
21+
22+
import { firewallFactory } from 'src/factories';
1823

1924
const mockEnabledRegion = regionFactory.build({
2025
id: 'us-east',
@@ -37,10 +42,15 @@ const mockBlackwellLinodeTypes = new Array(4).fill(null).map((_, index) =>
3742
const selectedBlackwell = mockBlackwellLinodeTypes[0];
3843

3944
describe('smoketest for Nvidia blackwell GPUs in linodes/create page', () => {
45+
const mockFirewall = firewallFactory.build({
46+
id: randomNumber(),
47+
label: randomLabel(),
48+
});
4049
beforeEach(() => {
4150
mockGetRegions([mockEnabledRegion, mockDisabledRegion]).as('getRegions');
4251

4352
mockGetLinodeTypes(mockBlackwellLinodeTypes).as('getLinodeTypes');
53+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
4454
});
4555

4656
/*
@@ -120,6 +130,11 @@ describe('smoketest for Nvidia blackwell GPUs in linodes/create page', () => {
120130
cy.findByLabelText('Linode Label').type(newLinodeLabel);
121131
cy.get('[type="password"]').should('be.visible').scrollIntoView();
122132
cy.get('[id="root-password"]').type(randomString(12));
133+
// Select a firewall
134+
linodeCreatePage.selectFirewall(
135+
mockFirewall.label,
136+
'Public Interface Firewall'
137+
);
123138
cy.scrollTo('bottom');
124139
const mockLinode = linodeFactory.build({
125140
label: randomLabel(),

packages/manager/cypress/e2e/core/linodes/create-linode-in-core-region.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { linodeFactory, regionFactory } from '@linode/utilities';
22
import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags';
3+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
34
import { mockCreateLinode } from 'support/intercepts/linodes';
45
import {
56
mockGetRegionAvailability,
@@ -8,6 +9,9 @@ import {
89
import { ui } from 'support/ui';
910
import { linodeCreatePage } from 'support/ui/pages';
1011
import { randomLabel, randomString } from 'support/util/random';
12+
import { randomNumber } from 'support/util/random';
13+
14+
import { firewallFactory } from 'src/factories';
1115

1216
describe('Create Linode in a Core Region', () => {
1317
/*
@@ -30,6 +34,10 @@ describe('Create Linode in a Core Region', () => {
3034
region: mockRegion1.id,
3135
});
3236
const rootPass = randomString(32);
37+
const mockFirewall = firewallFactory.build({
38+
id: randomNumber(),
39+
label: randomLabel(),
40+
});
3341

3442
mockAppendFeatureFlags({
3543
gecko2: {
@@ -39,6 +47,7 @@ describe('Create Linode in a Core Region', () => {
3947
}).as('getFeatureFlags');
4048
mockGetRegions(mockRegions).as('getRegions');
4149
mockGetRegionAvailability(mockRegion1.id, []).as('getRegionAvailability');
50+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
4251
mockCreateLinode(mockLinode).as('createLinode');
4352

4453
cy.visitWithLogin('/linodes/create');
@@ -55,6 +64,11 @@ describe('Create Linode in a Core Region', () => {
5564
linodeCreatePage.selectImage('Debian 11');
5665
linodeCreatePage.setRootPassword(rootPass);
5766
linodeCreatePage.selectPlan('Shared CPU', 'Nanode 1 GB');
67+
// Select a firewall
68+
linodeCreatePage.selectFirewall(
69+
mockFirewall.label,
70+
'Public Interface Firewall'
71+
);
5872

5973
ui.button
6074
.findByTitle('Create Linode')

packages/manager/cypress/e2e/core/linodes/create-linode-in-distributed-region.spec.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
regionFactory,
55
} from '@linode/utilities';
66
import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags';
7+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
78
import {
89
mockCreateLinode,
910
mockGetLinodeTypes,
@@ -14,9 +15,11 @@ import {
1415
} from 'support/intercepts/regions';
1516
import { ui } from 'support/ui';
1617
import { linodeCreatePage } from 'support/ui/pages';
17-
import { randomLabel, randomString } from 'support/util/random';
18+
import { randomLabel, randomNumber, randomString } from 'support/util/random';
1819
import { extendRegion } from 'support/util/regions';
1920

21+
import { firewallFactory } from 'src/factories';
22+
2023
import type { Region } from '@linode/api-v4';
2124

2225
describe('Create Linode in Distributed Region', () => {
@@ -42,6 +45,10 @@ describe('Create Linode in Distributed Region', () => {
4245
label: randomLabel(),
4346
region: mockRegion.id,
4447
});
48+
const mockFirewall = firewallFactory.build({
49+
id: randomNumber(),
50+
label: randomLabel(),
51+
});
4552
const rootPass = randomString(32);
4653

4754
mockAppendFeatureFlags({
@@ -51,6 +58,7 @@ describe('Create Linode in Distributed Region', () => {
5158
},
5259
}).as('getFeatureFlags');
5360
mockGetRegions([mockRegion]).as('getRegions');
61+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
5462
mockGetLinodeTypes(mockLinodeTypes).as('getLinodeTypes');
5563
mockGetRegionAvailability(mockRegion.id, []).as('getRegionAvailability');
5664
mockCreateLinode(mockLinode).as('createLinode');
@@ -75,6 +83,12 @@ describe('Create Linode in Distributed Region', () => {
7583
.click();
7684
});
7785

86+
// Select a firewall
87+
linodeCreatePage.selectFirewall(
88+
mockFirewall.label,
89+
'Public Interface Firewall'
90+
);
91+
7892
ui.button
7993
.findByTitle('Create Linode')
8094
.should('be.visible')

packages/manager/cypress/e2e/core/linodes/create-linode-mobile.spec.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44

55
import { linodeFactory } from '@linode/utilities';
66
import { MOBILE_VIEWPORTS } from 'support/constants/environment';
7+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
78
import { mockCreateLinode } from 'support/intercepts/linodes';
89
import { ui } from 'support/ui';
910
import { linodeCreatePage } from 'support/ui/pages';
1011
import { randomLabel, randomNumber, randomString } from 'support/util/random';
1112
import { chooseRegion } from 'support/util/regions';
1213

14+
import { firewallFactory } from 'src/factories';
15+
1316
describe('Linode create mobile smoke', () => {
1417
MOBILE_VIEWPORTS.forEach((viewport) => {
1518
/*
@@ -23,7 +26,11 @@ describe('Linode create mobile smoke', () => {
2326
label: randomLabel(),
2427
region: mockLinodeRegion.id,
2528
});
26-
29+
const mockFirewall = firewallFactory.build({
30+
id: randomNumber(),
31+
label: randomLabel(),
32+
});
33+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
2734
mockCreateLinode(mockLinode).as('createLinode');
2835

2936
cy.viewport(viewport.width, viewport.height);
@@ -34,6 +41,11 @@ describe('Linode create mobile smoke', () => {
3441
linodeCreatePage.selectPlanCard('Shared CPU', 'Nanode 1 GB');
3542
linodeCreatePage.setLabel(mockLinode.label);
3643
linodeCreatePage.setRootPassword(randomString(32));
44+
// Select a firewall
45+
linodeCreatePage.selectFirewall(
46+
mockFirewall.label,
47+
'Public Interface Firewall'
48+
);
3749

3850
cy.get('[data-qa-linode-create-summary]').scrollIntoView();
3951
cy.get('[data-qa-linode-create-summary]').within(() => {

packages/manager/cypress/e2e/core/linodes/create-linode-view-code-snippet.spec.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
*/
44

55
import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags';
6+
import { mockGetFirewalls } from 'support/intercepts/firewalls';
67
import { ui } from 'support/ui';
78
import { linodeCreatePage } from 'support/ui/pages';
8-
import { randomLabel, randomString } from 'support/util/random';
9+
import { randomLabel, randomNumber, randomString } from 'support/util/random';
910
import { chooseRegion } from 'support/util/regions';
1011

12+
import { firewallFactory } from 'src/factories';
13+
1114
describe('Create Linode flow to validate code snippet modal', () => {
1215
beforeEach(() => {
1316
mockAppendFeatureFlags({
@@ -24,6 +27,11 @@ describe('Create Linode flow to validate code snippet modal', () => {
2427
const mockLinodeRegion = chooseRegion({
2528
capabilities: ['Linodes'],
2629
});
30+
const mockFirewall = firewallFactory.build({
31+
id: randomNumber(),
32+
label: randomLabel(),
33+
});
34+
mockGetFirewalls([mockFirewall]).as('getFirewalls');
2735
cy.visitWithLogin('/linodes/create');
2836

2937
// Set Linode label, distribution, plan type, password, etc.
@@ -32,6 +40,8 @@ describe('Create Linode flow to validate code snippet modal', () => {
3240
linodeCreatePage.selectRegionById(mockLinodeRegion.id);
3341
linodeCreatePage.selectPlan('Shared CPU', 'Nanode 1 GB');
3442
linodeCreatePage.setRootPassword(rootPass);
43+
// Select a firewall
44+
linodeCreatePage.selectFirewall(mockFirewall.label, 'Assign Firewall');
3545

3646
// View Code Snippets and confirm it's provisioned as expected.
3747
ui.button

0 commit comments

Comments
 (0)