Ejemplo n.º 1
0
 def test_query_list_view(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     self.browser.find_by_id('queriesMenu').first.click()
     button_text = self.browser.find_by_id('create-query').first.value
     spin_assert(lambda: self.assertEqual(button_text, "New Query"))
Ejemplo n.º 2
0
 def test_data_node_addition_rel_add_del(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_node(self, "Bob")
     create_node(self, "Alice")
     # We create a allowed relation
     js_code = "$('a#schema-link')[0].click();"
     self.browser.execute_script(js_code)
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill("This the allowed relationship for Bob's graph")
     self.browser.find_by_value('Save Type').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - Bob's graph"))
     # We create the link between the nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//td[@class='dataActions']/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath("//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", 5)
     self.browser.find_by_xpath("//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b").first.click()
     self.browser.find_by_value("Save Bob's type").first.click()
     # Delete the relationship
     self.browser.find_by_xpath("//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath("//span[@class='all-relationships incoming-relationships i_bobs_rel1-relationships']//a[@class='delete-row initial-form floating']").first.click()
     self.browser.find_by_value("Save Bob's type").first.click()
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath("//div[@class='flags-block']/span[@class='graph-relationships']").first.value
     spin_assert(lambda: self.assertEqual(text, "0 relationships"))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 3
0
 def test_data_delete_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(
         self.browser.find_by_xpath("//a[@id='dataMenu']").first,
         self.browser.find_by_xpath(
             "//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']"
         ).first)
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']"
     ).first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("403"), -1))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 4
0
 def test_graph_export_csv(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {self.browser.cookies.all()[0]["name"]: self.browser.cookies.all()[0]["value"], self.browser.cookies.all()[1]["name"]: self.browser.cookies.all()[1]["value"]}
     result = requests.get(self.live_server_url + '/tools/bobs-graph/export/csv/', cookies=cookies)
     spin_assert(lambda: self.assertEqual(
         result.headers['content-type'], 'application/zip'))
     spin_assert(lambda: self.assertEqual(
         self.browser.status_code.is_success(), True))
     test_file = StringIO(result.content)
     csv_zip = ZipFile(test_file)
     for name in csv_zip.namelist():
         fw = open('sylva/sylva/tests/files/' + name, 'w')
         fw.write(csv_zip.read(name))
         fw.close()
     for name in csv_zip.namelist():
         f = open('sylva/sylva/tests/files/' + name)
         csvFile = ""
         for line in f:
             csvFile += line
         f.close()
         spin_assert(lambda: self.assertEqual(csv_zip.read(name), csvFile))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 5
0
 def test_graph_export_gexf(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {
         self.browser.cookies.all()[0]["name"]:
         self.browser.cookies.all()[0]["value"],
         self.browser.cookies.all()[1]["name"]:
         self.browser.cookies.all()[1]["value"]
     }
     result = requests.get(self.live_server_url +
                           '/tools/bobs-graph/export/gexf/',
                           cookies=cookies)
     self.assertEqual(result.headers['content-type'], 'application/xml')
     self.assertEqual(self.browser.status_code.is_success(), True)
     fw = open('sylva/base/tests/files/bobs-graph.gexf', 'w')
     fw.write(result.content)
     fw.close()
     f = open('sylva/base/tests/files/bobs-graph.gexf')
     xmlFile = ""
     for line in f:
         xmlFile += line
     f.close()
     self.assertEqual(xmlFile, result.content)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 6
0
 def test_schema_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', SCHEMA_VIEW)
     add_permission(self, 'alice', SCHEMA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     self.browser.find_by_xpath("//fieldset[@class='module aligned wide model']/h2/a").first.click()
     self.browser.find_by_xpath(
         "//input[@id='id_name']").first.fill("Alice's type")
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkLeft']/input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//fieldset[@class='module aligned wide model']/h2/a").first.value
     self.assertEqual(text, "Alice's type")
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 7
0
 def test_graph_export_csv(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {
         self.browser.cookies.all()[0]["name"]:
         self.browser.cookies.all()[0]["value"],
         self.browser.cookies.all()[1]["name"]:
         self.browser.cookies.all()[1]["value"]
     }
     result = requests.get(self.live_server_url +
                           '/tools/bobs-graph/export/csv/',
                           cookies=cookies)
     self.assertEqual(result.headers['content-type'], 'application/zip')
     self.assertEqual(self.browser.status_code.is_success(), True)
     test_file = StringIO(result.content)
     csv_zip = ZipFile(test_file)
     for name in csv_zip.namelist():
         fw = open('sylva/base/tests/files/' + name, 'w')
         fw.write(csv_zip.read(name))
         fw.close()
     for name in csv_zip.namelist():
         f = open('sylva/base/tests/files/' + name)
         csvFile = ""
         for line in f:
             csvFile += line
         f.close()
         self.assertEqual(csv_zip.read(name), csvFile)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 8
0
 def test_data_change_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath(
         "//input[@id='id_Name']").first.fill("Alice's node")
     self.browser.find_by_xpath("//input[@type='submit']").first.click()
     text = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     self.assertEqual(text, "Alice's node")
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 9
0
 def test_schema_allowed_rel_addition_deletion(self):
     create_graph(self)
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Dashboard'))
     create_schema(self)
     create_type(self)
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          "SylvaDB - Bob's graph"))
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         "This the allowed relationship for Bob's graph")
     self.browser.find_by_value('Save Type').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          "SylvaDB - Bob's graph"))
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("Bob's rel"), -1))
     self.browser.find_by_xpath(
         "//div[@class='form-row indent']/div[@class='form-row indent']/a"
     ).first.click()
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkRight']/a[@class='delete']"
     ).first.click()
     self.browser.choose('confirm', '1')
     self.browser.find_by_value('Continue').first.click()
     notExists = self.browser.is_element_not_present_by_xpath(
         "//div[@class='form-row indent']/label")
     spin_assert(lambda: self.assertEqual(notExists, True))
Ejemplo n.º 10
0
 def test_data_delete_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     add_permission(self, 'alice', DATA_DELETE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']").first.click()
     self.browser.choose('confirm', '1')
     self.browser.find_by_xpath("//input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@id='content2']/div[@class='indent']").first.value
     self.assertNotEqual(text.find('Nodes: 0'), -1)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 11
0
 def test_node_type_deletion_keeping_nodes(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     # Adding relationship to the type
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'The loved relationship')
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("Bob's rel"), -1))
     # Creating nodes
     create_node(self, 'Bob')
     create_node(self, 'Alice')
     # Creating relationship between nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//td[@class='dataActions']/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath("//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", wait_time=5)
     self.browser.find_by_xpath("//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b").first.click()
     self.browser.find_by_value("Save Bob's type").first.click()
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath("//div[@class='flags-block']/span[@class='graph-relationships']").first.value
     spin_assert(lambda: self.assertEqual(text, "1 relationships"))
     # Deleting type
     js_code = "$('a#schema-link')[0].click();"
     self.browser.execute_script(js_code)
     self.browser.find_by_xpath("//fieldset[@class='module aligned wide model']/h2/a").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[@class='delete']").first.click()
     text = self.browser.find_by_xpath(
         "//p/label[@for='id_option_0']").first.value
     spin_assert(lambda: self.assertNotEqual(text.find(
         "We found some elements of this type"), -1))
     # Keeping nodes
     self.browser.choose('option', 'no')
     self.browser.find_by_value('Continue').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='body-inside']/p").first.value
     spin_assert(lambda: self.assertEqual(
         text, 'There are no types defined yet.'))
     # Checking
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath("//div[@class='flags-block']/span[@class='graph-nodes']").first.value
     spin_assert(lambda: self.assertEqual(text, "2 nodes"))
     text = self.browser.find_by_xpath("//div[@class='flags-block']/span[@class='graph-relationships']").first.value
     spin_assert(lambda: self.assertEqual(text, "1 relationships"))
     text = self.browser.find_by_xpath(
         "//div[@class='graph-empty-message']").first.value
     spin_assert(lambda: self.assertNotEqual(
         text.find("Your Schema is empty."), -1))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 12
0
 def test_export_schema(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {self.browser.cookies.all()[0]["name"]: self.browser.cookies.all()[0]["value"], self.browser.cookies.all()[1]["name"]: self.browser.cookies.all()[1]["value"]}
     result = requests.get(self.live_server_url + '/schemas/bobs-graph/export/', cookies=cookies)
     self.assertEqual(result.headers['content-type'], 'application/json')
     self.assertEqual(self.browser.status_code.is_success(), True)
     f = open('sylva/base/tests/files/bobs-graph_schema.json')
     self.assertEqual(f.read().split("\n")[0], result.content)
Ejemplo n.º 13
0
 def test_data_node_addition_rel_add_del(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_node(self, "Bob")
     create_node(self, "Alice")
     # We create a allowed relation
     js_code = "$('a#schema-link')[0].click();"
     self.browser.execute_script(js_code)
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('Bob\'s rel')
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'This the allowed relationship for Bob\'s graph')
     self.browser.find_by_value('Save Type').first.click()
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     # We create the link between the nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataActions']/a[@class='dataOption list']"
     ).first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", 5)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     self.browser.find_by_value('Save Bob\'s type').first.click()
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-relationships']"
     ).first.value
     self.assertEqual(text, "1 relationships")
     # Delete the relationship
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataActions']/a[@class='dataOption list']"
     ).first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath(
         "//span[@class='all-relationships incoming-relationships i_bobs_rel1-relationships']//a[@class='delete-row initial-form floating']"
     ).first.click()
     self.browser.find_by_value('Save Bob\'s type').first.click()
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-relationships']"
     ).first.value
     self.assertEqual(text, "0 relationships")
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 14
0
 def test_export_schema(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {self.browser.cookies.all()[0]["name"]: self.browser.cookies.all()[0]["value"], self.browser.cookies.all()[1]["name"]: self.browser.cookies.all()[1]["value"]}
     result = requests.get(self.live_server_url + '/schemas/bobs-graph/export/', cookies=cookies)
     spin_assert(lambda: self.assertEqual(
         result.headers['content-type'], 'application/json'))
     spin_assert(lambda: self.assertEqual(
         self.browser.status_code.is_success(), True))
     f = open('sylva/sylva/tests/files/bobs-graph_schema.json')
     spin_assert(lambda: self.assertEqual(
         f.read().split("\n")[0], result.content))
Ejemplo n.º 15
0
 def test_sigma_visualization_in_node_view(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     # Adding relationship to the type
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'The loved relationship')
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find("Bob's rel"), -1)
     # Creating nodes
     create_node(self, 'Bob')
     create_node(self, 'Alice')
     # Creating relationship between nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataActions']/a[@class='dataOption list']"
     ).first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", wait_time=5)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     self.browser.find_by_value('Save Bob\'s type').first.click()
     # Checking
     self.browser.find_by_xpath(
         "//table[@id='content_table']/tbody/tr/td/p/a[@title='View node' and text()='Alice']"
     ).first.click()
     self.browser.is_element_present_by_id('wait_for_js', 3)
     js_code = '''
         var instanceId = '0';
         for (key in sigma.instances) {
             instanceId = key;
             break;
         }
         var instance = sigma.instances[instanceId];
         sigma.test_node_count = instance.getNodesCount();
         '''
     self.browser.execute_script(js_code)
     text = self.browser.evaluate_script('sigma.test_node_count')
     self.assertEqual(text, 2)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 16
0
 def test_query_builder_view(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     self.browser.find_by_id('queriesMenu').first.click()
     new_query_button = self.browser.find_by_id('create-query').first
     button_text = new_query_button.value
     spin_assert(lambda: self.assertEqual(button_text, "New Query"))
     new_query_button.click()
     diagram_title = self.browser.find_by_id('diagramTitle').first.value
     spin_assert(lambda: self.assertEqual(diagram_title, "Diagram"))
     node_type_text = self.browser.find_by_xpath(
         "//table[@id='node-types']/tbody/tr/td/a").first.value
     # This node type name is the name that we use in the create_type method
     spin_assert(lambda: self.assertEqual(node_type_text, "Bob's type"))
Ejemplo n.º 17
0
 def test_data_node_addition(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     # Check the node name
     self.browser.find_by_xpath("//td[@class='dataList']/a[@class='edit']").first.click()
     text = self.browser.find_by_id('propertiesTitle').first.value
     spin_assert(lambda: self.assertEqual(text, 'Properties'))
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a").first.click()
     self.browser.choose('confirm', '1')
     self.browser.find_by_value('Continue').first.click()
     text = self.browser.find_by_xpath("//div[@class='indent']/div").first.value
     Graph.objects.get(name="Bob's graph").destroy()
     spin_assert(lambda: self.assertEqual(text, 'Nodes: 0'))
Ejemplo n.º 18
0
 def test_data_node_clone(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     original_name = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     # Clone the node
     self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td/a[@class='edit']").first.click()
     self.browser.find_by_name('Name').first.fill(original_name + " clone")
     self.browser.find_by_name("as-new").first.click()
     # Check that two nodes exist
     original_name = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     clone_name = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[4].value
     spin_assert(lambda: self.assertEqual(original_name, "Bob's node"))
     spin_assert(lambda: self.assertEqual(clone_name, "Bob's node clone"))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 19
0
 def test_schema_allowed_rel_addition(self):
     create_graph(self)
     self.assertEqual(self.browser.title, 'SylvaDB - Dashboard')
     create_schema(self)
     create_type(self)
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('Bob\'s rel')
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill('This the allowed relationship for Bob\'s graph')
     self.browser.find_by_value('Save Type').first.click()
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find('Bob\'s rel'), -1)
Ejemplo n.º 20
0
 def test_schema_allowed_rel_addition(self):
     create_graph(self)
     self.assertEqual(self.browser.title, 'SylvaDB - Dashboard')
     create_schema(self)
     create_type(self)
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('Bob\'s rel')
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'This the allowed relationship for Bob\'s graph')
     self.browser.find_by_value('Save Type').first.click()
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find('Bob\'s rel'), -1)
Ejemplo n.º 21
0
 def test_schema_view_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     self.assertNotEqual(text.find("403"), -1)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 22
0
 def test_data_node_addition(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     # Check the node name
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     text = self.browser.find_by_id('propertiesTitle').first.value
     self.assertEqual(text, 'Properties')
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkRight']/a").first.click(
         )
     self.browser.choose('confirm', '1')
     self.browser.find_by_value('Continue').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='indent']/div").first.value
     Graph.objects.get(name="Bob's graph").destroy()
     self.assertEqual(text, 'Nodes: 0')
Ejemplo n.º 23
0
 def test_sigma_visualization_in_node_view(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     # Adding relationship to the type
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'The loved relationship')
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find("Bob's rel"), -1)
     # Creating nodes
     create_node(self, 'Bob')
     create_node(self, 'Alice')
     # Creating relationship between nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//td[@class='dataActions']/a[@class='dataOption list']").first.click()
     self.browser.find_by_xpath("//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath("//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", wait_time=5)
     self.browser.find_by_xpath("//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b").first.click()
     self.browser.find_by_value('Save Bob\'s type').first.click()
     # Checking
     self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td/p/a[@title='View node' and text()='Alice']").first.click()
     self.browser.is_element_present_by_id('wait_for_js', 3)
     js_code = '''
         var instanceId = '0';
         for (key in sigma.instances) {
             instanceId = key;
             break;
         }
         var instance = sigma.instances[instanceId];
         sigma.test_node_count = instance.getNodesCount();
         '''
     self.browser.execute_script(js_code)
     text = self.browser.evaluate_script('sigma.test_node_count')
     self.assertEqual(text, 2)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 24
0
 def test_data_add_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath("//a[@id='dataMenu']").first.click()
     self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption new']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     self.assertNotEqual(text.find("403"), -1)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 25
0
 def test_graph_export_gexf(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     self.browser.find_by_id('toolsMenu').first.click()
     cookies = {self.browser.cookies.all()[0]["name"]: self.browser.cookies.all()[0]["value"], self.browser.cookies.all()[1]["name"]: self.browser.cookies.all()[1]["value"]}
     result = requests.get(self.live_server_url + '/tools/bobs-graph/export/gexf/', cookies=cookies)
     self.assertEqual(result.headers['content-type'], 'application/xml')
     self.assertEqual(self.browser.status_code.is_success(), True)
     fw = open('sylva/base/tests/files/bobs-graph.gexf', 'w')
     fw.write(result.content)
     fw.close()
     f = open('sylva/base/tests/files/bobs-graph.gexf')
     xmlFile = ""
     for line in f:
         xmlFile += line
     f.close()
     self.assertEqual(xmlFile, result.content)
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 26
0
 def test_schema_view_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', SCHEMA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//nav[@class='menu']/ul/li[3]/a").first.click()
     text = self.browser.find_by_xpath(
         "//fieldset[@class='module aligned wide model']/h2/a").first.value
     self.assertEqual(text, "Bob's type")
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 27
0
 def test_data_view_with_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(self.browser.find_by_xpath("//a[@id='dataMenu']").first,
                                           self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first)
     text = self.browser.find_by_xpath("//table[@id='content_table']/tbody/tr/td")[1].value
     spin_assert(lambda: self.assertEqual(text, "Bob's node"))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 28
0
 def test_data_node_clone(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     original_name = self.browser.find_by_xpath(
         "//table[@id='content_table']/tbody/tr/td")[1].value
     # Clone the node
     self.browser.find_by_xpath(
         "//table[@id='content_table']/tbody/tr/td/a[@class='edit']"
     ).first.click()
     self.browser.find_by_name('Name').first.fill(original_name + " clone")
     self.browser.find_by_name("as-new").first.click()
     # Check that two nodes exist
     original_name = self.browser.find_by_xpath(
         "//table[@id='content_table']/tbody/tr/td")[1].value
     clone_name = self.browser.find_by_xpath(
         "//table[@id='content_table']/tbody/tr/td")[4].value
     self.assertEqual(original_name, "Bob's node")
     self.assertEqual(clone_name, "Bob's node clone")
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 29
0
 def test_schema_allowed_rel_addition_deletion(self):
     create_graph(self)
     self.assertEqual(self.browser.title, 'SylvaDB - Dashboard')
     create_schema(self)
     create_type(self)
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('Bob\'s rel')
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill('This the allowed relationship for Bob\'s graph')
     self.browser.find_by_value('Save Type').first.click()
     self.assertEqual(self.browser.title, "SylvaDB - Bob's graph")
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find('Bob\'s rel'), -1)
     self.browser.find_by_xpath("//div[@class='form-row indent']/div[@class='form-row indent']/a").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[@class='delete']").first.click()
     self.browser.choose('confirm', '1')
     self.browser.find_by_value('Continue').first.click()
     notExists = self.browser.is_element_not_present_by_xpath(
         "//div[@class='form-row indent']/label")
     self.assertEqual(notExists, True)
Ejemplo n.º 30
0
 def test_data_delete_without_permissions(self):
     signup(self, 'alice', '*****@*****.**', 'alice_secret')
     signin(self, 'alice', 'alice_secret')
     logout(self)
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', DATA_VIEW)
     add_permission(self, 'alice', DATA_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     spin_click(self.browser.find_by_xpath("//a[@id='dataMenu']").first,
                                           self.browser.find_by_xpath("//div[@id='dataBrowse']/table/tbody/tr/td/a[@class='dataOption list']").first)
     self.browser.find_by_xpath("//td/a[@title='Edit node']").first.click()
     self.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkRight']/a[text()='Remove']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='heading']/h1").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("403"), -1))
     Graph.objects.get(name="Bob's graph").destroy()
Ejemplo n.º 31
0
 def test_node_type_deletion_deleting_nodes(self):
     create_graph(self)
     create_schema(self)
     create_type(self)
     # Adding relationship to the type
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill("Bob's rel")
     self.browser.select('target', '1')
     self.browser.find_by_id('id_description').fill(
         'The loved relationship')
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='form-row indent']/label").first.value
     self.assertNotEqual(text.find("Bob's rel"), -1)
     # Creating nodes
     create_node(self, 'Bob')
     create_node(self, 'Alice')
     # Creating relationship between nodes
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataActions']/a[@class='dataOption list']"
     ).first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input").first.fill('Alice')
     self.browser.is_element_present_by_id("id_user_wait", wait_time=5)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     self.browser.find_by_value('Save Bob\'s type').first.click()
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-relationships']"
     ).first.value
     self.assertEqual(text, "1 relationships")
     # Deleting type
     js_code = "$('a#schema-link')[0].click();"
     self.browser.execute_script(js_code)
     self.browser.find_by_xpath(
         "//fieldset[@class='module aligned wide model']/h2/a").first.click(
         )
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkRight']/a[@class='delete']"
     ).first.click()
     text = self.browser.find_by_xpath(
         "//p/label[@for='id_option_0']").first.value
     self.assertNotEqual(text.find("We found some elements of this type"),
                         -1)
     # Deleting nodes
     self.browser.choose('option', 'de')
     self.browser.find_by_value('Continue').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='body-inside']/p").first.value
     self.assertEqual(text, 'There are no types defined yet.')
     # Checking
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-nodes']"
     ).first.value
     self.assertEqual(text, "0 nodes")
     text = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-relationships']"
     ).first.value
     self.assertEqual(text, "0 relationships")
     Graph.objects.get(name="Bob's graph").destroy()