File: test_task_submit.py

package info (click to toggle)
python-globus-sdk 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,172 kB
  • sloc: python: 35,227; sh: 44; makefile: 35
file content (110 lines) | stat: -rw-r--r-- 3,499 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
"""
Tests for submitting Transfer and Delete tasks
"""

import json

import pytest

from globus_sdk import DeleteData, TransferAPIError, TransferData
from globus_sdk.testing import get_last_request, load_response
from tests.common import GO_EP1_ID, GO_EP2_ID


def test_transfer_submit_failure(client):
    load_response(client.get_submission_id)
    meta = load_response(client.submit_transfer, case="failure").metadata

    with pytest.raises(TransferAPIError) as excinfo:
        client.submit_transfer(TransferData(GO_EP1_ID, GO_EP2_ID))

    assert excinfo.value.http_status == 400
    assert excinfo.value.request_id == meta["request_id"]
    assert excinfo.value.code == "ClientError.BadRequest.NoTransferItems"


def test_transfer_submit_success(client):
    load_response(client.get_submission_id)
    meta = load_response(client.submit_transfer).metadata

    tdata = TransferData(
        GO_EP1_ID,
        GO_EP2_ID,
        label="mytask",
        sync_level="exists",
        deadline="2018-06-01",
        source_local_user="my-source-user",
        destination_local_user="my-dest-user",
        additional_fields={"custom_param": "foo"},
    )
    assert tdata["custom_param"] == "foo"
    assert tdata["sync_level"] == 0

    tdata.add_item("/path/to/foo", "/path/to/bar")

    res = client.submit_transfer(tdata)

    assert res
    assert res["submission_id"] == meta["submission_id"]
    assert res["task_id"] == meta["task_id"]

    req_body = json.loads(get_last_request().body)
    assert req_body["source_local_user"] == "my-source-user"
    assert req_body["destination_local_user"] == "my-dest-user"


def test_delete_submit_success(client):
    load_response(client.get_submission_id)
    meta = load_response(client.submit_delete).metadata

    ddata = DeleteData(
        endpoint=GO_EP1_ID,
        label="mytask",
        deadline="2018-06-01",
        local_user="my-user",
        additional_fields={"custom_param": "foo"},
    )
    assert ddata["custom_param"] == "foo"

    ddata.add_item("/path/to/foo")

    res = client.submit_delete(ddata)

    assert res
    assert res["submission_id"] == meta["submission_id"]
    assert res["task_id"] == meta["task_id"]

    req_body = json.loads(get_last_request().body)
    assert req_body["local_user"] == "my-user"


@pytest.mark.parametrize("datatype", ("transfer", "delete"))
def test_submit_adds_missing_submission_id_to_data(client, datatype):
    data = {}
    meta = load_response(client.get_submission_id).metadata
    if datatype == "transfer":
        load_response(client.submit_transfer)
        client.submit_transfer(data)
    else:
        load_response(client.submit_delete)
        client.submit_delete(data)
    assert "submission_id" in data
    assert data["submission_id"] == meta["submission_id"]
    req_body = json.loads(get_last_request().body)
    assert req_body == data


@pytest.mark.parametrize("datatype", ("transfer", "delete"))
def test_submit_does_not_overwrite_existing_submission_id(client, datatype):
    data = {"submission_id": "foo"}
    meta = load_response(client.get_submission_id).metadata
    if datatype == "transfer":
        load_response(client.submit_transfer)
        client.submit_transfer(data)
    else:
        load_response(client.submit_delete)
        client.submit_delete(data)
    assert data["submission_id"] == "foo"
    assert data["submission_id"] != meta["submission_id"]
    req_body = json.loads(get_last_request().body)
    assert req_body == data