TPT-4261: Implement integration tests for Expand Create Linodes Options and Password-less Linodes#693
Conversation
…d_keys_root_pass_are_not_set and def test_create_linode_with_kernel_and_boot_size_then_add_disk_and_rebuild
There was a problem hiding this comment.
Pull request overview
This PR adds new integration coverage around Linode creation options (kernel, boot_size) and validation behavior when creating an Instance from an Image without root_pass / authorized_users / authorized_keys.
Changes:
- Adds a new session-scoped fixture that creates a Linode using
kernelandboot_sizewithauthorized_keys. - Adds an integration test asserting
instance_createraises aValueErrorwhen none ofroot_pass,authorized_users, orauthorized_keysare provided. - Adds an integration test that creates a disk and then rebuilds the Linode.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| linode_instance = client.linode.instance_create( | ||
| "g6-nanode-1", | ||
| region, | ||
| image="linode/debian12", | ||
| label=label, | ||
| kernel="linode/6.15.7-x86_64-linode169", | ||
| boot_size=9000, | ||
| authorized_keys="ssh-rsa", | ||
| ) |
| region, | ||
| image="linode/debian12", | ||
| label=label, | ||
| kernel="linode/6.15.7-x86_64-linode169", |
| region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core") | ||
| label = get_test_label(length=8) | ||
|
|
||
| linode_instance = client.linode.instance_create( | ||
| "g6-nanode-1", | ||
| region, | ||
| image="linode/debian12", | ||
| label=label, | ||
| kernel="linode/6.15.7-x86_64-linode169", | ||
| boot_size=9000, | ||
| authorized_keys="ssh-rsa", |
| image="linode/debian12", | ||
| label=label, | ||
| kernel="linode/6.15.7-x86_64-linode169", | ||
| boot_size="9000", |
| 3, | ||
| linode_create.rebuild, | ||
| "linode/debian12", | ||
| authorized_keys="ecdsa-sha2-nistp", |
| @pytest.fixture(scope="session") | ||
| def create_linode_with_authorization_key(test_linode_client, ssh_key_gen): | ||
| client = test_linode_client | ||
|
|
||
| region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core") | ||
| label = get_test_label(length=8) |
| def test_expected_error_if_fields_authorized_users_authorized_keys_root_pass_are_not_set( | ||
| test_linode_client, | ||
| ): | ||
| client = test_linode_client | ||
| region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core") | ||
| label = get_test_label(length=8) | ||
|
|
||
| with pytest.raises(ValueError) as create_instance_error: | ||
| client.linode.instance_create( | ||
| "g6-nanode-1", | ||
| region, | ||
| image="linode/debian12", | ||
| label=label, | ||
| kernel="linode/latest-64bit", | ||
| boot_size=9000, | ||
| ) | ||
| assert ( | ||
| "When creating an Instance from an Image, at least one of root_pass, authorized_users, or authorized_keys must be provided." | ||
| in str(create_instance_error.value) | ||
| ) | ||
|
|
||
|
|
| @@ -1,4 +1,5 @@ | |||
| import ipaddress | |||
| import random | |||
There was a problem hiding this comment.
Without this import there is error NameError: name 'random' is not defined.
There was a problem hiding this comment.
@psnoch-akamai I think you can use the random label helper (get_test_label) for the randomized label before so then we won't have to import random
34254e0 to
44b0454
Compare
ezilber-akamai
left a comment
There was a problem hiding this comment.
Tests are passing locally. There are a few remaining stylistic CoPilot suggestions but nothing critical. Nice work!
| linode_create.disk_create, | ||
| size=2000, | ||
| image="linode/debian12", | ||
| label="python-disk-test-" + random.randrange(100000, 999999).__str__(), |
There was a problem hiding this comment.
Can we use get_test_label here?
There was a problem hiding this comment.
Good idea, changed
* TPT-4527: Implemented changes for SLADE and CLEO projects (#665) * Implemented changes for SLADE and CLEO projects * Address CoPilot suggestions * Reference newer debian version in examples * Fixed boot_size in unit tests * Add authorized_users as one of the required params alongside root_pass and authorized_keys * Fix lint * Fix docstring * Address suggestions * Drop root_pass from returned fields for instance_create, rebuild, and disk_create * Fix lint * TPT-4261: Implement integration tests for Expand Create Linodes Options and Password-less Linodes (#693) * Create tests test_expected_error_if_fields_authorized_users_authorized_keys_root_pass_are_not_set and def test_create_linode_with_kernel_and_boot_size_then_add_disk_and_rebuild * Add copilot suggestions * Add code review suggestions --------- Co-authored-by: Pawel <100145168+psnoch-akamai@users.noreply.github.com>
📝 Description
Implement integration tests for Expand Create Linodes Options and Password-less Linodes
✔️ How to Test
make TEST_CASE=test_expected_error_if_fields_authorized_users_authorized_keys_root_pass_are_not_set test-int
make TEST_CASE=test_create_linode_with_kernel_and_boot_size_then_add_disk_and_rebuild test-int