def test_delete_detaches(fast_poller, requests_mocker, client): """delete causes repository to become detached""" repo = Repository(id="some-repo") repo.__dict__["_client"] = client requests_mocker.delete( "https://pulp.example.com/pulp/api/v2/repositories/some-repo/", json={"spawned_tasks": [{ "task_id": "task1" }, { "task_id": "task2" }]}, ) requests_mocker.post( "https://pulp.example.com/pulp/api/v2/tasks/search/", json=[ { "task_id": "task1", "state": "finished" }, { "task_id": "task2", "state": "skipped" }, ], ) # Delete should succeed repo.delete().result() # Second attempt to delete doesn't make sense with pytest.raises(DetachedException): repo.delete()
def test_delete_success(fast_poller, requests_mocker, client): """delete succeeds and returns spawned tasks""" repo = Repository(id="some-repo") repo.__dict__["_client"] = client requests_mocker.delete( "https://pulp.example.com/pulp/api/v2/repositories/some-repo/", json={"spawned_tasks": [{ "task_id": "task1" }, { "task_id": "task2" }]}, ) requests_mocker.post( "https://pulp.example.com/pulp/api/v2/tasks/search/", json=[ { "task_id": "task1", "state": "finished" }, { "task_id": "task2", "state": "skipped" }, ], ) # It should have succeeded, with the tasks as retrieved from Pulp assert sorted(repo.delete().result()) == [ Task(id="task1", succeeded=True, completed=True), Task(id="task2", succeeded=True, completed=True), ]
def test_delete_absent(fast_poller, requests_mocker, client): """delete of an object which already doesn't exist is successful""" # Two handles to same repo repo1 = Repository(id="some-repo") repo1.__dict__["_client"] = client repo2 = Repository(id="some-repo") repo2.__dict__["_client"] = client requests_mocker.delete( "https://pulp.example.com/pulp/api/v2/repositories/some-repo/", [ # first attempt to delete dict(json={"spawned_tasks": [{ "task_id": "task1" }]}), # second attempt fails as 404 because it already was deleted dict( status_code=404, json={ "http_status": 404, "http_request_method": "DELETE" }, ), ], ) requests_mocker.post( "https://pulp.example.com/pulp/api/v2/tasks/search/", json=[{ "task_id": "task1", "state": "finished" }], ) # Delete via first handle succeeds with the spawned task assert sorted(repo1.delete().result()) == [ Task(id="task1", succeeded=True, completed=True) ] # Delete via second handle also succeeds, but with no tasks assert sorted(repo2.delete().result()) == []