|
1 | 1 | # -------------------------------------------------------------------------------------------- |
2 | 2 | # Copyright (c) Microsoft Corporation. All rights reserved. |
3 | 3 | # Licensed under the MIT License. See License.txt in the project root for license information. |
4 | | -# |
5 | | -# Code generated by aaz-dev-tools |
6 | 4 | # -------------------------------------------------------------------------------------------- |
7 | 5 |
|
8 | | -from azure.cli.testsdk import * |
| 6 | +import os |
| 7 | +from azure.cli.testsdk import ResourceGroupPreparer, JMESPathCheck, ScenarioTest |
9 | 8 |
|
10 | 9 |
|
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)) |
0 commit comments