Skip to content

Commit 9ba76c6

Browse files
author
Kevin Kim
committed
Adding more tests for gk validation
1 parent 68f6c5f commit 9ba76c6

File tree

2 files changed

+71
-9
lines changed

2 files changed

+71
-9
lines changed

tests/integration/test_data_rows.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from labelbox import DataRow
99
from labelbox.schema.data_row_metadata import DataRowMetadataField
10-
from labelbox.exceptions import MalformedQueryException
1110
import labelbox.exceptions
1211

1312
SPLIT_SCHEMA_ID = "cko8sbczn0002h2dkdaxb5kal"
@@ -291,7 +290,7 @@ def test_create_data_row_with_invalid_metadata(dataset, image_url):
291290
fields.append(
292291
DataRowMetadataField(schema_id=EMBEDDING_SCHEMA_ID, value=[0.0] * 128))
293292

294-
with pytest.raises(labelbox.exceptions.MalformedQueryException) as excinfo:
293+
with pytest.raises(labelbox.exceptions.MalformedQueryException):
295294
dataset.create_data_row(row_data=image_url, metadata_fields=fields)
296295

297296

@@ -624,11 +623,6 @@ def test_data_row_bulk_creation_with_unique_global_keys(dataset, sample_image):
624623

625624
def test_data_row_bulk_creation_with_same_global_keys(dataset, sample_image):
626625
global_key_1 = str(uuid.uuid4())
627-
628-
629-
def test_create_data_rows_with_global_key(dataset, sample_image):
630-
global_key_1 = str(uuid.uuid4())
631-
global_key_2 = str(uuid.uuid4())
632626
task = dataset.create_data_rows([{
633627
DataRow.row_data: sample_image,
634628
DataRow.global_key: global_key_1

tests/integration/test_global_keys.py

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from tkinter import E
21
import uuid
32
import pytest
43

@@ -50,7 +49,7 @@ def test_assign_global_keys_to_data_rows_validation_error(client):
5049
with pytest.raises(ValueError) as excinfo:
5150
client.assign_global_keys_to_data_rows(assignment_inputs)
5251
e = """[{'data_row_id': 'test uid', 'wrong_key': 'gk 1'}, {'wrong_key': 'test uid 3', 'global_key': 'gk 3'}, {'data_row_id': 'test uid 4'}, {'global_key': 'gk 5'}, {}]"""
53-
assert e
52+
assert e in str(excinfo.value)
5453

5554

5655
def test_assign_same_global_keys_to_data_rows(client, dataset, image_url):
@@ -77,3 +76,72 @@ def test_assign_same_global_keys_to_data_rows(client, dataset, image_url):
7776
assert res['errors'][0]['data_row_id'] == dr_2.uid
7877
assert res['errors'][0]['global_key'] == gk_1
7978
assert res['errors'][0]['error'] == "Invalid global key"
79+
80+
81+
def test_global_key_sanitization(dataset, image_url):
82+
uuid_str = str(uuid.uuid4())
83+
unsanitized_global_key = "\"<>\\{\\}\\|" + uuid_str
84+
sanitized_global_key = "_________" + uuid_str
85+
dr = dataset.create_data_row(row_data=image_url,
86+
global_key=unsanitized_global_key)
87+
assert dr.global_key == sanitized_global_key
88+
89+
90+
def test_long_global_key_validation(client, dataset, image_url):
91+
long_global_key = 'x' * 201
92+
dr_1 = dataset.create_data_row(row_data=image_url)
93+
dr_2 = dataset.create_data_row(row_data=image_url)
94+
95+
gk_1 = str(uuid.uuid4())
96+
gk_2 = long_global_key
97+
98+
assignment_inputs = [{
99+
"data_row_id": dr_1.uid,
100+
"global_key": gk_1
101+
}, {
102+
"data_row_id": dr_2.uid,
103+
"global_key": gk_2
104+
}]
105+
res = client.assign_global_keys_to_data_rows(assignment_inputs)
106+
107+
assert len(res['results']) == 1
108+
assert len(res['errors']) == 1
109+
assert res['status'] == 'PARTIAL SUCCESS'
110+
assert res['results'][0]['data_row_id'] == dr_1.uid
111+
assert res['results'][0]['global_key'] == gk_1
112+
assert res['errors'][0]['data_row_id'] == dr_2.uid
113+
assert res['errors'][0]['global_key'] == gk_2
114+
assert res['errors'][0]['error'] == 'Invalid global key'
115+
116+
117+
def test_global_key_with_whitespaces_validation(client, dataset, image_url):
118+
dr_1 = dataset.create_data_row(row_data=image_url)
119+
dr_2 = dataset.create_data_row(row_data=image_url)
120+
dr_3 = dataset.create_data_row(row_data=image_url)
121+
122+
gk_1 = ' global key'
123+
gk_2 = 'global key'
124+
gk_3 = 'global key '
125+
126+
assignment_inputs = [{
127+
"data_row_id": dr_1.uid,
128+
"global_key": gk_1
129+
}, {
130+
"data_row_id": dr_2.uid,
131+
"global_key": gk_2
132+
}, {
133+
"data_row_id": dr_3.uid,
134+
"global_key": gk_3
135+
}]
136+
res = client.assign_global_keys_to_data_rows(assignment_inputs)
137+
138+
assert len(res['results']) == 0
139+
assert len(res['errors']) == 3
140+
assert res['status'] == 'FAILURE'
141+
assign_errors_ids = set([e['data_row_id'] for e in res['errors']])
142+
assign_errors_gks = set([e['global_key'] for e in res['errors']])
143+
assign_errors_msgs = set([e['error'] for e in res['errors']])
144+
assert assign_errors_ids == set([dr_1.uid, dr_2.uid, dr_3.uid])
145+
assert assign_errors_gks == set([gk_1, gk_2, gk_3])
146+
assert assign_errors_msgs == set(
147+
['Invalid global key', 'Invalid global key', 'Invalid global key'])

0 commit comments

Comments
 (0)