|
2 | 2 | import pytest
|
3 | 3 |
|
4 | 4 | from azure.ai.resources.client import AIClient
|
5 |
| -from azure.ai.resources.entities import Project |
| 5 | +from azure.ai.resources.entities import Project, AIResource |
6 | 6 | from azure.core.exceptions import ResourceNotFoundError
|
7 | 7 | from devtools_testutils import is_live
|
8 | 8 |
|
@@ -33,22 +33,34 @@ def test_project_get_and_list(self, ai_client: AIClient):
|
33 | 33 | # DEV NOTE: due to how long it takes for 3 LROPollers to resolve, this test can easily take a couple minutes to run in live mode
|
34 | 34 | @pytest.mark.skipif(condition=not is_live(), reason="Random generation in ARM template(?) makes create recordings useless.")
|
35 | 35 | def test_create_update_and_delete(self, ai_client: AIClient, rand_num: Callable[[], str]):
|
36 |
| - new_local_project = Project( |
37 |
| - name="e2eTestProj" + rand_num(), |
38 |
| - ai_resource=f"/subscriptions/{ai_client.subscription_id}/resourceGroups/{ai_client.resource_group_name}" |
39 |
| - + f"/providers/Microsoft.MachineLearningServices/workspaces/{ai_client.ai_resource_name}", |
40 |
| - description="Transient test project. Delete if seen.", |
41 |
| - ) |
42 |
| - created_project = ai_client.projects.begin_create(project=new_local_project).result() |
43 |
| - assert created_project.name == new_local_project.name |
44 |
| - assert created_project.ai_resource == new_local_project.ai_resource |
| 36 | + try: |
| 37 | + # Create none values to make cleanup easier |
| 38 | + created_project = None |
| 39 | + created_resource = None |
| 40 | + # create AI resource to house project |
| 41 | + created_resource = ai_client.ai_resources.begin_create(ai_resource=AIResource( |
| 42 | + name="e2eTestResource" + rand_num(), |
| 43 | + )).result() |
45 | 44 |
|
| 45 | + # Create project with above AI resource as parent. |
| 46 | + new_local_project = Project( |
| 47 | + name="e2eTestProj" + rand_num(), |
| 48 | + ai_resource=created_resource.id, |
| 49 | + description="Transient test project. Delete if seen.", |
| 50 | + ) |
| 51 | + created_project = ai_client.projects.begin_create(project=new_local_project).result() |
| 52 | + assert created_project.name == new_local_project.name |
| 53 | + assert created_project.ai_resource == new_local_project.ai_resource |
| 54 | + finally: |
| 55 | + if created_project: |
| 56 | + ai_client.projects.begin_delete(name=created_project.name, delete_dependent_resources=True).wait() |
| 57 | + # Ensure that project was deleted |
| 58 | + with pytest.raises(ResourceNotFoundError): |
| 59 | + ai_client.projects.get(name=created_project.name) |
| 60 | + if created_resource: |
| 61 | + ai_client.ai_resources.begin_delete(name=created_resource.name, delete_dependent_resources=True).wait() |
46 | 62 |
|
47 |
| - delete_poller = ai_client.projects.begin_delete(name=created_project.name, delete_dependent_resources=True) |
48 |
| - delete_poller.wait() |
49 | 63 |
|
50 |
| - with pytest.raises(ResourceNotFoundError): |
51 |
| - ai_client.projects.get(name=created_project.name) |
52 | 64 |
|
53 | 65 | # This test should be run live as little as possible, since it requires a special client setup that
|
54 | 66 | # most users don't have locally, and doesn't clean up easily. Because of this, this test shouldn't ever
|
|
0 commit comments