From 025f61f1928d614dfceaf8ed3952310df4fcde24 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Mon, 7 Feb 2022 16:38:32 +0100 Subject: [PATCH] WIP: pipeline --- tests/test_issues_server.py | 81 ++++++++++++++++++++++++++++++++++++- tests/test_permissions.py | 32 ++++++++------- tests/test_query.py | 7 ++-- 3 files changed, 101 insertions(+), 19 deletions(-) diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index a05a1ca..7f14550 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -49,7 +49,6 @@ def setup(): def teardown(): """Deleting entities again.""" setup_module() - pass # ########################### Issue tests start here ##################### @@ -463,3 +462,83 @@ def test_issue_183(): value="2015-05-05T20:15").insert() assert cm.value.errors[0].msg == ("Cannot parse value to datetime format " "(yyyy-mm-dd'T'hh:mm:ss[.fffffffff][TimeZone]).") + + +@pytest.mark.xfail(reason="fix https://gitlab.com/caosdb/caosdb-server/-/issues/130") +def test_issue_130(): + """Test select queries where names contain spaces + + https://gitlab.com/caosdb/caosdb-server/-/issues/130 + + However, this bug was actually about quotation marks + """ + db.RecordType(name="TestRT_A").insert() + r1 = db.Record("ReferencedRecord").add_parent("TestRT_A").insert() + p1 = db.Property(name="TestWrapper", datatype="TestRT_A").insert() + p2 = db.Property(name="TestWrapper With Spaces", datatype="TestRT_A").insert() + db.RecordType(name="TestRT_B" + ).add_property(name="TestWrapper" + ).add_property("TestWrapper With Spaces" + ).insert() + db.Record().add_parent("TestRT_B" + ).add_property("TestWrapper", value=r1 + ).add_property("TestWrapper With Spaces", + value=r1 + ).insert() + + + query = "SELECT TestWrapper FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper")) + assert row == [(r1.id,)] + + query = "SELECT TestWrapper FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "id")) + assert row == [(p1.id,)] + + query = "SELECT 'TestWrapper' FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "id")) + assert row == [(r1.id,)] #FAILS + + query = "SELECT TestWrapper FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "name")) + assert row == [("TestWrapper",)] + + query = "SELECT TestWrapper.name FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "name")) + assert row == [("ReferencedRecord",)] + + query = "SELECT 'TestWrapper.name' FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "name")) + assert row == [("ReferencedRecord",)] #FAILS + + query = "SELECT 'TestWrapper'.name FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper", "name")) + assert row == [("ReferencedRecord",)] #FAILS + + query = "SELECT TestWrapper With Spaces FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces")) + assert row == [(r1.id,)] + + query = "SELECT TestWrapper With Spaces FROM RECORD TestRT_B" + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "id")) + assert row == [(p2.id,)] + + query = 'SELECT TestWrapper With Spaces FROM RECORD TestRT_B' + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) + assert row == [("TestWrapper With Spaces",)] + + query = 'SELECT "TestWrapper With Spaces" FROM RECORD TestRT_B' + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) + assert row == [("ReferencedRecord",)] #FAILS + + query = 'SELECT TestWrapper With Spaces.name FROM RECORD TestRT_B' + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) + assert row == [("ReferencedRecord",)] #Works!!! This is about the quotation marks + + query = 'SELECT "TestWrapper With Spaces.name" FROM RECORD TestRT_B' + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) + assert row == [("ReferencedRecord",)] #FAILS + + query = 'SELECT "TestWrapper With Spaces".name FROM RECORD TestRT_B' + row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) + assert row == [("ReferencedRecord",)] #FAILS diff --git a/tests/test_permissions.py b/tests/test_permissions.py index 182c4fd..16bb9cf 100644 --- a/tests/test_permissions.py +++ b/tests/test_permissions.py @@ -45,7 +45,9 @@ easy_pw = "1234" def setup_module(): - switch_to_admin_user() + d = db.execute_query("FIND *") + if len(d) > 0: + d.delete() insert_test_user() @@ -62,6 +64,9 @@ def teardown_module(): os.remove("test2.dat") except BaseException: pass + d = db.execute_query("FIND *") + if len(d) > 0: + d.delete() @mark.skip @@ -486,13 +491,12 @@ def test_update_role(): def test_update_move_file(): - upload_file = open("test.dat", "w") - upload_file.write("hello world\n") - upload_file.close() + with open("test.dat", "w") as upload_file: + upload_file.write("hello world\n") f = db.File( name="TestFile", - path="/permissiontestfiles/test.dat", + path="/testfiles/permissiontestfiles/test.dat", file="test.dat").insert() assert f.is_valid() @@ -500,22 +504,22 @@ def test_update_move_file(): grant_permission(f, "UPDATE:FILE:MOVE") '''SUCCESS''' - f.path = "/otherpermissiontestfiles/test.dat" + f.path = "/testfiles/otherpermissiontestfiles/test.dat" f.update() f2 = db.execute_query("FIND TestFile", unique=True) - assert_equal(f2.path, "/otherpermissiontestfiles/test.dat") + assert_equal(f2.path, "/testfiles/otherpermissiontestfiles/test.dat") deny_permission(f, "UPDATE:FILE:MOVE") '''FAILURE''' - f.path = "/againotherpermissiontestfiles/test.dat" + f.path = "/testfiles/againotherpermissiontestfiles/test.dat" with raises(db.TransactionError) as te: f.update() assert te.value.has_error(db.AuthorizationError) f2 = db.execute_query("FIND TestFile", unique=True) - assert f2.path == "/otherpermissiontestfiles/test.dat" + assert f2.path == "/testfiles/otherpermissiontestfiles/test.dat" def test_update_add_file(): @@ -529,7 +533,7 @@ def test_update_add_file(): grant_permission(f, "RETRIEVE:ENTITY") '''FAILURE''' - f.path = "/permissiontestfiles/newtest.dat" + f.path = "/testfiles/permissiontestfiles/newtest.dat" f.file = upload_file with raises(db.TransactionError) as te: f.update() @@ -542,13 +546,13 @@ def test_update_add_file(): grant_permission(f, "UPDATE:FILE:ADD") f2 = db.execute_query("FIND TestFile", unique=True) - f2.path = "/permissiontestfiles/newtest.dat" + f2.path = "/testfiles/permissiontestfiles/newtest.dat" f2.file = upload_file f2.update() assert f2.is_valid() f2 = db.execute_query("FIND TestFile", unique=True) - assert_equal(f2.path, "/permissiontestfiles/newtest.dat") + assert_equal(f2.path, "/testfiles/permissiontestfiles/newtest.dat") def test_update_change_file(): @@ -563,7 +567,7 @@ def test_update_change_file(): f = db.File( name="TestFile", file=upload_file, - path="permissiontestfiles/test.dat").insert() + path="testfiles/permissiontestfiles/test.dat").insert() assert f.is_valid() grant_permission(f, "RETRIEVE:ENTITY") grant_permission(f, "RETRIEVE:FILE") @@ -925,7 +929,7 @@ def test_download_file(): f = db.File( name="TestFile", file=upload_file, - path="permissiontestfiles/test.dat").insert() + path="testfiles/permissiontestfiles/test.dat").insert() assert f.is_valid() '''FAILURE''' diff --git a/tests/test_query.py b/tests/test_query.py index 92639f2..ad3fc94 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -45,7 +45,7 @@ def setup_module(): def setup(): try: - db.execute_query("FIND Test*").delete() + db.execute_query("FIND *").delete() except Exception as e: print(e) @@ -633,9 +633,8 @@ def store_file(path, name=None, f=None): def test_stored_at_wildcards(): - upload_file = open("test.dat", "w") - upload_file.write("hello world\n") - upload_file.close() + with open("test.dat", "w") as upload_file: + upload_file.write("hello world\n") file1 = store_file("test1.dat", f=upload_file) -- GitLab