1- from tkinter import E
21import uuid
32import 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
5655def 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