Skip to content
Snippets Groups Projects
Commit f5d985a7 authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

TST: allow mockup

parent 9eb457d6
No related branches found
No related tags found
2 merge requests!53Release 0.1,!32ENH: add security levels that may prevent updates or inserts
Pipeline #26334 passed with warnings
...@@ -761,11 +761,15 @@ class Crawler(object): ...@@ -761,11 +761,15 @@ class Crawler(object):
else: else:
pass pass
@staticmethod
def _get_property_entity(name):
return db.Entity(name=name).retrieve()
@staticmethod @staticmethod
def execute_inserts_in_list(to_be_inserted, securityMode, run_id: int = None): def execute_inserts_in_list(to_be_inserted, securityMode, run_id: int = None):
for record in to_be_inserted: for record in to_be_inserted:
for prop in record.properties: for prop in record.properties:
entity = db.Entity(name=prop.name).retrieve() entity = Crawler._get_property_entity(prop.name)
_resolve_datatype(prop, entity) _resolve_datatype(prop, entity)
print("INSERT") print("INSERT")
print(to_be_inserted) print(to_be_inserted)
......
...@@ -543,8 +543,11 @@ def test_replace_entities_with_ids(crawler): ...@@ -543,8 +543,11 @@ def test_replace_entities_with_ids(crawler):
@patch("caoscrawler.crawl.db.Container.insert") @patch("caoscrawler.crawl.db.Container.insert")
@patch("caoscrawler.crawl.db.Container.update") @patch("caoscrawler.crawl.db.Container.update")
@patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties") @patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties")
@patch("caoscrawler.crawl.Crawler._get_property_entity")
@patch("caoscrawler.crawl.UpdateCache.insert") @patch("caoscrawler.crawl.UpdateCache.insert")
def test_security_mode_trivial(UpdateCacheMock, set_id_mock, update_mock, insert_mock, ident): def test_security_mode_trivial(UpdateCacheMock, get_prop_mock, set_id_mock, update_mock,
insert_mock, ident):
get_prop_mock.side_effect = lambda x: db.Property(name="A")
crawler = Crawler(debug=True, securityMode=SecurityMode.RETRIEVE) crawler = Crawler(debug=True, securityMode=SecurityMode.RETRIEVE)
crawler.crawl_directory(rfp("test_directories", "examples_article"), crawler.crawl_directory(rfp("test_directories", "examples_article"),
rfp("scifolder_cfood.yml")) rfp("scifolder_cfood.yml"))
...@@ -559,9 +562,11 @@ def test_security_mode_trivial(UpdateCacheMock, set_id_mock, update_mock, insert ...@@ -559,9 +562,11 @@ def test_security_mode_trivial(UpdateCacheMock, set_id_mock, update_mock, insert
@patch("caoscrawler.crawl.db.Container.insert") @patch("caoscrawler.crawl.db.Container.insert")
@patch("caoscrawler.crawl.db.Container.update") @patch("caoscrawler.crawl.db.Container.update")
@patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties") @patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties")
@patch("caoscrawler.crawl.Crawler._get_property_entity")
@patch("caoscrawler.crawl.UpdateCache.insert") @patch("caoscrawler.crawl.UpdateCache.insert")
def test_security_mode_insert_forbidden(UpdateCacheMock, set_id_mock, update_mock, insert_mock, def test_security_mode_trivial(UpdateCacheMock, get_prop_mock, set_id_mock, update_mock,
ident): insert_mock, ident):
get_prop_mock.side_effect = lambda x: db.Property(name="A")
crawler = Crawler(debug=True, securityMode=SecurityMode.RETRIEVE) crawler = Crawler(debug=True, securityMode=SecurityMode.RETRIEVE)
crawler.crawl_directory(rfp("test_directories", "examples_article"), crawler.crawl_directory(rfp("test_directories", "examples_article"),
rfp("scifolder_cfood.yml")) rfp("scifolder_cfood.yml"))
...@@ -573,19 +578,19 @@ def test_security_mode_insert_forbidden(UpdateCacheMock, set_id_mock, update_moc ...@@ -573,19 +578,19 @@ def test_security_mode_insert_forbidden(UpdateCacheMock, set_id_mock, update_moc
update_mock.assert_not_called() update_mock.assert_not_called()
assert UpdateCacheMock.call_count == 2 assert UpdateCacheMock.call_count == 2
#
@patch("caoscrawler.crawl.db.Container.insert") # @patch("caoscrawler.crawl.db.Container.insert")
@patch("caoscrawler.crawl.db.Container.update") # @patch("caoscrawler.crawl.db.Container.update")
@patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties") # @patch("caoscrawler.crawl.Crawler.set_ids_and_datatype_of_parents_and_properties")
@patch("caoscrawler.crawl.UpdateCache.insert") # @patch("caoscrawler.crawl.UpdateCache.insert")
def test_security_mode_insert_allowed(UpdateCacheMock, set_id_mock, update_mock, insert_mock, # def test_security_mode_insert_allowed(UpdateCacheMock, set_id_mock, update_mock, insert_mock,
ident): # ident):
crawler = Crawler(debug=True, securityMode=SecurityMode.INSERT) # crawler = Crawler(debug=True, securityMode=SecurityMode.INSERT)
crawler.crawl_directory(rfp("test_directories", "examples_article"), # crawler.crawl_directory(rfp("test_directories", "examples_article"),
rfp("scifolder_cfood.yml")) # rfp("scifolder_cfood.yml"))
crawler.identifiableAdapter = ident # crawler.identifiableAdapter = ident
del ident._registered_identifiables["Person"] # del ident._registered_identifiables["Person"]
insl, updl = crawler.synchronize(commit_changes=True) # insl, updl = crawler.synchronize(commit_changes=True)
insert_mock.assert_called() # insert_mock.assert_called()
update_mock.assert_not_called() # update_mock.assert_not_called()
assert UpdateCacheMock.call_count == 1 # assert UpdateCacheMock.call_count == 1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment