Skip to content

Commit e11b633

Browse files
author
Danny Tundwe (from Dev Box)
committed
Fix linter and style issues
- Added linter_exclusions.yml for long parameter names - Added parameter help documentation for deploy-from-file command - Fixed line length in _params.py - Fixed pylint warning in custom.py (initialized encoded_content) - All tests passing (5/5) in playback mode
1 parent c648946 commit e11b633

File tree

4 files changed

+177
-7
lines changed

4 files changed

+177
-7
lines changed

src/edge-action/azext_edge_action/_params.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,13 @@
1010

1111

1212
def load_arguments(self, _): # pylint: disable=unused-argument
13-
pass
13+
with self.argument_context('edge-action version deploy-from-file') as c:
14+
c.argument('resource_group', options_list=['--resource-group', '-g'],
15+
help='Name of resource group.')
16+
c.argument('edge_action_name', help='Name of the edge action.')
17+
c.argument('version', help='Version name.')
18+
c.argument('file_path', help='Path to JavaScript (.js) or zip (.zip) file to deploy.')
19+
c.argument('deployment_type',
20+
help='Deployment type: "file" for JavaScript files, "zip" for zip archives. '
21+
'Auto-detected if not specified.')
22+
c.argument('no_wait', help='Do not wait for the long-running operation to finish.')

src/edge-action/azext_edge_action/custom.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def deploy_edge_action_version(cmd, resource_group, edge_action_name, version,
8585
logger.info("Processing file: %s (deployment type: %s)", file_path, deployment_type)
8686

8787
# Process file based on deployment type and file extension
88+
encoded_content = None
8889
if deployment_type == 'file':
8990
# 'file' deployment type: JS file, encode as-is without zipping
9091
logger.info("Reading JavaScript file for 'file' deployment type (no zipping)")
Lines changed: 149 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,156 @@
11
# --------------------------------------------------------------------------------------------
22
# Copyright (c) Microsoft Corporation. All rights reserved.
33
# Licensed under the MIT License. See License.txt in the project root for license information.
4-
#
5-
# Code generated by aaz-dev-tools
64
# --------------------------------------------------------------------------------------------
75

8-
from azure.cli.testsdk import *
6+
import os
7+
from azure.cli.testsdk import ResourceGroupPreparer, JMESPathCheck, ScenarioTest
98

109

11-
class EdgeActionScenario(ScenarioTest):
12-
# TODO: add tests here
13-
pass
10+
TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..'))
11+
12+
13+
class EdgeActionScenarioTest(ScenarioTest):
14+
15+
@ResourceGroupPreparer(name_prefix='clitests', location='eastus', additional_tags={'owner': 'edgeaction'})
16+
def test_edge_action_crud(self, resource_group):
17+
"""Test Edge Action CRUD operations"""
18+
edge_action_name = self.create_random_name(prefix='edgeaction', length=20)
19+
20+
# Test list edge actions (should be empty initially)
21+
list_checks = [JMESPathCheck('length(@)', 0)]
22+
self.cmd('edge-action list -g {}'.format(resource_group), checks=list_checks)
23+
24+
# Test create edge action
25+
create_checks = [
26+
JMESPathCheck('name', edge_action_name),
27+
JMESPathCheck('resourceGroup', resource_group)
28+
]
29+
self.cmd('edge-action create -g {} -n {} --sku name=Standard tier=Standard --location global'.format(
30+
resource_group, edge_action_name), checks=create_checks)
31+
32+
# Test show edge action
33+
show_checks = [
34+
JMESPathCheck('name', edge_action_name),
35+
JMESPathCheck('resourceGroup', resource_group)
36+
]
37+
self.cmd('edge-action show -g {} -n {}'.format(resource_group, edge_action_name), checks=show_checks)
38+
39+
# Test list edge actions (should contain 1 item now)
40+
list_checks = [JMESPathCheck('length(@)', 1)]
41+
self.cmd('edge-action list -g {}'.format(resource_group), checks=list_checks)
42+
43+
# Test update edge action
44+
self.cmd('edge-action update -g {} -n {} --tags test=value'.format(
45+
resource_group, edge_action_name))
46+
47+
# Test delete edge action
48+
self.cmd('edge-action delete -g {} -n {} -y'.format(resource_group, edge_action_name))
49+
50+
# Verify deletion - list should be empty again
51+
list_checks = [JMESPathCheck('length(@)', 0)]
52+
self.cmd('edge-action list -g {}'.format(resource_group), checks=list_checks)
53+
54+
@ResourceGroupPreparer(additional_tags={'owner': 'edgeaction'})
55+
def test_edge_action_version_operations(self, resource_group):
56+
"""Test Edge Action Version operations"""
57+
edge_action_name = self.create_random_name(prefix='edgeaction', length=20)
58+
version_name = 'v1'
59+
60+
# Create edge action first
61+
self.cmd('edge-action create -g {} -n {} --sku name=Standard tier=Standard --location global'.format(
62+
resource_group, edge_action_name))
63+
64+
# Test create version
65+
create_version_checks = [
66+
JMESPathCheck('name', version_name)
67+
]
68+
self.cmd('edge-action version create -g {} --edge-action-name {} -n {} --deployment-type file --location global --is-default-version False'.format(
69+
resource_group, edge_action_name, version_name), checks=create_version_checks)
70+
71+
# Test show version
72+
self.cmd('edge-action version show -g {} --edge-action-name {} -n {}'.format(
73+
resource_group, edge_action_name, version_name))
74+
75+
# Test list versions
76+
list_version_checks = [JMESPathCheck('length(@)', 1)]
77+
self.cmd('edge-action version list -g {} --edge-action-name {}'.format(
78+
resource_group, edge_action_name), checks=list_version_checks)
79+
80+
# Test delete version
81+
self.cmd('edge-action version delete -g {} --edge-action-name {} -n {} -y'.format(
82+
resource_group, edge_action_name, version_name))
83+
84+
# Clean up edge action
85+
self.cmd('edge-action delete -g {} -n {} -y'.format(resource_group, edge_action_name))
86+
87+
@ResourceGroupPreparer(additional_tags={'owner': 'edgeaction'})
88+
def test_edge_action_version_deploy_with_file(self, resource_group):
89+
"""Test Edge Action Version deployment with file path using custom command"""
90+
edge_action_name = self.create_random_name(prefix='edgeaction', length=20)
91+
version_name = 'v1'
92+
93+
# Create edge action and version
94+
self.cmd('edge-action create -g {} -n {} --sku name=Standard tier=Standard --location global'.format(
95+
resource_group, edge_action_name))
96+
self.cmd('edge-action version create -g {} --edge-action-name {} -n {} --deployment-type file --location global --is-default-version False'.format(
97+
resource_group, edge_action_name, version_name))
98+
99+
# Use test fixture file
100+
test_file = os.path.join(TEST_DIR, 'test_files', 'sample_edge_action.js')
101+
102+
# Test deploy with file path using custom deploy-from-file command (file mode)
103+
self.cmd('edge-action version deploy-from-file -g {} --edge-action-name {} --version {} --file-path "{}" --deployment-type file'.format(
104+
resource_group, edge_action_name, version_name, test_file))
105+
106+
# Clean up
107+
self.cmd('edge-action version delete -g {} --edge-action-name {} -n {} -y'.format(
108+
resource_group, edge_action_name, version_name))
109+
self.cmd('edge-action delete -g {} -n {} -y'.format(resource_group, edge_action_name))
110+
111+
@ResourceGroupPreparer(additional_tags={'owner': 'edgeaction'})
112+
def test_edge_action_version_deploy_with_zip(self, resource_group):
113+
"""Test Edge Action Version deployment with zip file using custom command"""
114+
edge_action_name = self.create_random_name(prefix='edgeaction', length=20)
115+
version_name = 'v1'
116+
117+
# Create edge action and version
118+
self.cmd('edge-action create -g {} -n {} --sku name=Standard tier=Standard --location global'.format(
119+
resource_group, edge_action_name))
120+
self.cmd('edge-action version create -g {} --edge-action-name {} -n {} --deployment-type zip --location global --is-default-version False'.format(
121+
resource_group, edge_action_name, version_name))
122+
123+
# Use test fixture zip file
124+
test_zip = os.path.join(TEST_DIR, 'test_files', 'sample_edge_action.zip')
125+
126+
# Test deploy with zip file path using custom deploy-from-file command (auto-detects zip)
127+
self.cmd('edge-action version deploy-from-file -g {} --edge-action-name {} --version {} --file-path "{}"'.format(
128+
resource_group, edge_action_name, version_name, test_zip))
129+
130+
# Clean up
131+
self.cmd('edge-action version delete -g {} --edge-action-name {} -n {} -y'.format(
132+
resource_group, edge_action_name, version_name))
133+
self.cmd('edge-action delete -g {} -n {} -y'.format(resource_group, edge_action_name))
134+
135+
@ResourceGroupPreparer(additional_tags={'owner': 'edgeaction'})
136+
def test_edge_action_version_deploy_with_content(self, resource_group):
137+
"""Test Edge Action Version deployment with base64 content (backward compatibility)"""
138+
edge_action_name = self.create_random_name(prefix='edgeaction', length=20)
139+
version_name = 'v1'
140+
141+
# Create edge action and version
142+
self.cmd('edge-action create -g {} -n {} --sku name=Standard tier=Standard --location global'.format(
143+
resource_group, edge_action_name))
144+
self.cmd('edge-action version create -g {} --edge-action-name {} -n {} --deployment-type file --location global --is-default-version False'.format(
145+
resource_group, edge_action_name, version_name))
146+
147+
# Test deploy with base64 content
148+
import base64
149+
test_content = base64.b64encode(b'function handler(event) { return event; }').decode('utf-8')
150+
self.cmd('edge-action version deploy-version-code -g {} --edge-action-name {} --version {} --name testcode --content "{}"'.format(
151+
resource_group, edge_action_name, version_name, test_content))
152+
153+
# Clean up
154+
self.cmd('edge-action version delete -g {} --edge-action-name {} -n {} -y'.format(
155+
resource_group, edge_action_name, version_name))
156+
self.cmd('edge-action delete -g {} -n {} -y'.format(resource_group, edge_action_name))
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
edge-action execution-filter create:
3+
parameters:
4+
execution_filter_identifier_header_name:
5+
rule_exclusions:
6+
- option_length_too_long
7+
execution_filter_identifier_header_value:
8+
rule_exclusions:
9+
- option_length_too_long
10+
edge-action execution-filter update:
11+
parameters:
12+
execution_filter_identifier_header_name:
13+
rule_exclusions:
14+
- option_length_too_long
15+
execution_filter_identifier_header_value:
16+
rule_exclusions:
17+
- option_length_too_long

0 commit comments

Comments
 (0)