Пример #1
0
 def test_user_logout(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     logout(self)
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Signed out'))
     spin_assert(lambda: self.assertEqual(self.browser.find_by_css('.body-inside').first.value, 'You have been signed out. Till we meet again.'))
Пример #2
0
 def test_dashboard(self):
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEquals(self.browser.title,
                                           'SylvaDB - Dashboard'))
     text = self.browser.find_by_xpath(
         "//header[@class='global']/h1").first.value
     spin_assert(lambda: self.assertEqual(text, 'Dashboard'))
Пример #3
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()
     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(
         "//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
     spin_assert(lambda: self.assertEqual(text, "Alice's node"))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #4
0
 def test_graph_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)
     self.browser.find_by_xpath(
         "//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a"
     ).first.click()
     add_permission(self, 'alice', CREATE_COLLAB)
     add_permission(self, 'alice', GRAPH_CHANGE)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.find_by_xpath(
         "//div[@class='graph-item']/span[@class='graph-title']/a"
     ).first.click()
     self.browser.find_by_xpath("//input[@id='id_name']").first.fill(
         "Alice's graph")
     self.browser.find_by_xpath(
         "//form/input[@type='submit']").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='graph-item']/span[@class='graph-title']/a"
     ).first.value
     spin_assert(lambda: self.assertEqual(text, "Alice's graph"))
     Graph.objects.get(name="Alice's graph").destroy()
Пример #5
0
 def test_data_change_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)
     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()
     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()
Пример #6
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()
Пример #7
0
def import_advanced_schema_csv(test, name_export, name_import):
    """
    Import the schema for one graph. The parameters are the name of
    the graph to import and the graph from import. Csv format.
    """
    create_graph(test, name_import)
    spin_assert(lambda: test.assertEqual(
        test.browser.title, 'SylvaDB - Dashboard'))
    test.browser.find_link_by_href('/graphs/' + name_import + '/').first.click()
    test.browser.is_text_present('Your Schema is empty.')
    spin_assert(lambda: test.assertEqual(
        test.browser.title, "SylvaDB - " + name_import))
    test.browser.find_link_by_href(
        '/schemas/' + name_import + '/').first.click()
    spin_assert(lambda: test.assertEqual(test.browser.title, "SylvaDB - " + name_import))
    test.browser.find_by_id('schemaImport').first.click()
    file_path = os.path.join(
        os.path.abspath(os.path.dirname(__file__)),
        'files/csv/bobgraph_rel_schema.json'
    )
    test.browser.attach_file('file', file_path)
    test.browser.find_by_value('Continue').first.click()
    spin_assert(lambda: test.assertEqual(test.browser.title, "SylvaDB - " + name_import))
    text = test.browser.find_by_id('diagramBoxField_' + name_import + '.bobs-type-2.undefined').first.value
    spin_assert(lambda: test.assertEqual(text, "Name"))
Пример #8
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"))
Пример #9
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()
     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()
     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
     spin_assert(lambda: self.assertNotEqual(text.find('Nodes: 0'), -1))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #10
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
     spin_assert(lambda: self.assertEqual(text, "Alice's type"))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #11
0
 def test_user_signin_empty_password(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     self.browser.visit(self.live_server_url + '/accounts/signin/')
     self.browser.find_by_name('identification').fill('bob')
     self.browser.find_by_name('password').fill('')
     self.browser.find_by_xpath(
         "//div[@id='body']/div/form/input")[1].click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'This field is required.'))
Пример #12
0
 def test_user_singup_empty_password(self):
     self.browser.visit(self.live_server_url + '/accounts/signup/')
     self.browser.find_by_name('username').fill('bob')
     self.browser.find_by_name('email').fill('*****@*****.**')
     self.browser.find_by_name('password1').fill('')
     self.browser.find_by_name('password2').fill('bob_secret')
     self.browser.find_by_value('Signup').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'This field is required.'))
Пример #13
0
 def test_user_signin_bad_password(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     self.browser.visit(self.live_server_url + '/accounts/signin/')
     self.browser.find_by_name('identification').fill('bob')
     self.browser.find_by_name('password').fill('alice_secret')
     self.browser.find_by_xpath(
         "//div[@id='body']/div/form/input")[1].click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'Please enter a correct username or email and password. Note that both fields are case-sensitive.'))
Пример #14
0
 def test_user_singup_bad_email(self):
     self.browser.visit(self.live_server_url + '/accounts/signup/')
     self.browser.find_by_name('username').fill('bob')
     self.browser.find_by_name('email').fill('bobcultureplex.ca')
     self.browser.find_by_name('password1').fill('bob_secret')
     self.browser.find_by_name('password2').fill('bob_secret')
     self.browser.find_by_value('Signup').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(
         text, 'Enter a valid email address.'))
Пример #15
0
 def test_user_singup_password_unmatched(self):
     self.browser.visit(self.live_server_url + '/accounts/signup/')
     self.browser.find_by_name('username').fill('bob')
     self.browser.find_by_name('email').fill('*****@*****.**')
     self.browser.find_by_name('password1').fill('bob_secret')
     self.browser.find_by_name('password2').fill('bob_password')
     self.browser.find_by_value('Signup').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(
         text, "The two password fields didn't match."))
Пример #16
0
def create_schema(test):
    """
    This function only navigates to the schema section of the graph.
    """
    test.browser.find_link_by_href("/graphs/bobs-graph/").first.click()
    spin_assert(lambda: test.assertEqual(test.browser.title, "SylvaDB - Bob's graph"))
    js_code = "$('a#schema-link')[0].click();"
    test.browser.execute_script(js_code)
    text = test.browser.find_by_xpath("//div[@class='body-inside']/p").first.value
    spin_assert(lambda: test.assertEqual(text, "There are no types defined yet."))
Пример #17
0
 def test_automatic_tour(self):
     """
     Thist test checks that the tour starts automatically after signup, only
     once.
     """
     self.browser.is_element_present_by_id("wait_for_cookie_tour", 3)
     signin(self, "bob", "bob_secret")
     exist = self.browser.is_element_present_by_xpath("//div[@class='joyride-content-wrapper']")
     spin_assert(lambda: self.assertEqual(exist, True))
     self.browser.visit(self.live_server_url + "/dashboard/")
     exist = self.browser.is_element_present_by_xpath("//div[@class='joyride-content-wrapper']")
     spin_assert(lambda: self.assertNotEqual(exist, True))
Пример #18
0
def create_data(test):
    """
    For use it after create_type(). It cretes a simple node with schema created
    previously.
    """
    test.browser.find_by_id("dataMenu").first.click()
    test.browser.find_by_xpath("//a[@class='dataOption new']").first.click()
    text = test.browser.find_by_id("propertiesTitle").first.value
    spin_assert(lambda: test.assertEqual(text, "Properties"))
    test.browser.find_by_name("Name").first.fill("Bob's node")
    test.browser.find_by_value("Save Bob's type").first.click()
    text = test.browser.find_by_xpath("//div[@class='pagination']/span[@class='pagination-info']").first.value
    spin_assert(lambda: test.assertNotEqual(text.find(" elements Bob's type."), -1))
Пример #19
0
def create_node(test, name):
    """
    It creates a node of the 'only' type in the current node.
    """
    test.browser.find_by_id('dataMenu').first.click()
    test.browser.find_by_xpath(
        "//a[@class='dataOption new']").first.click()
    text = test.browser.find_by_id('propertiesTitle').first.value
    spin_assert(lambda: test.assertEqual(text, 'Properties'))
    test.browser.find_by_name('Name').first.fill(name)
    test.browser.find_by_xpath("//span[@class='buttonLinkOption buttonLinkLeft']/input").first.click()
    text = test.browser.find_by_xpath("//div[@class='pagination']/span[@class='pagination-info']").first.value
    spin_assert(lambda: test.assertNotEqual(
        text.find(" elements Bob's type."), -1))
Пример #20
0
 def test_import_schema(self):
     create_graph(self)
     create_schema(self)
     self.browser.find_by_id('schemaImport').first.click()
     file_path = os.path.join(
         os.path.abspath(os.path.dirname(__file__)),
         'files/bobs-graph_schema.json'
     )
     self.browser.attach_file('file', file_path)
     self.browser.find_by_value('Continue').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - Bob's graph"))
     text = self.browser.find_by_id('diagramBoxField_bobs-graph.bobs-type.undefined').first.value
     spin_assert(lambda: self.assertEqual(text, "Name"))
Пример #21
0
def create_advanced_data(test):
    """
    Create advanced data for the graph.
    """
    test.browser.find_by_id('dataMenu').first.click()
    test.browser.find_by_xpath(
        "//a[@class='dataOption new']").first.click()
    text = test.browser.find_by_id('propertiesTitle').first.value
    spin_assert(lambda: test.assertEqual(text, 'Properties'))
    test.browser.find_by_value("Save Bob's type").first.click()
    text = test.browser.find_by_xpath("//div[@class='pagination']/span[@class='pagination-info']").first.value
    # The next line must be more 'specific' when we can destroy Neo4j DBs
    spin_assert(lambda: test.assertNotEqual(
        text.find(" elements Bob's type."), -1))
Пример #22
0
 def test_user_details_future_birthdate(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/edit/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Account setup'))
     self.browser.find_by_name('first_name').fill('Bob')
     self.browser.find_by_name('last_name').fill('Doe')
     self.browser.attach_file('mugshot', 'http://www.gravatar.com/avatar/3d4bcca5d9c3a56a0282f308f9acda07?s=90')
     self.browser.select('language', 'en')
     self.browser.select('gender', '1')
     self.browser.find_by_name('website').fill('http://www.bobweb.com')
     self.browser.find_by_name('location').fill('London, Ontario')
     self.browser.find_by_name('birth_date').fill('2020-01-11')
     self.browser.find_by_name('about_me').fill('I am a very nice guy')
     self.browser.find_by_name('institution').fill('University')
     self.browser.find_by_name('company').fill('CulturePlex')
     self.browser.find_by_name('lab').fill('CulturePlex')
     self.browser.find_by_value('Save changes').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(
         text, 'You need to introduce a past date.'))
     logout(self)
Пример #23
0
 def test_new_type(self):
     create_graph(self)
     create_schema(self)
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='content2-first']/h2").first.value
     spin_assert(lambda: self.assertEqual(text, 'Type'))
     self.browser.find_by_name('name').first.fill("Bob's type")
     self.browser.find_by_xpath(
         "//div[@class='content2-first']/p/textarea[@name='description']").first.fill('The loved type')
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_xpath(
         "//div[@id='diagramBox_bobs-type']/div[@class='title']").first.value
     spin_assert(lambda: self.assertNotEqual(text.find("Bob's type"), -1))
Пример #24
0
 def test_graph_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)
     self.browser.find_by_xpath("//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a").first.click()
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.visit(self.live_server_url + '/graphs/bobs-graph/')
     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()
Пример #25
0
def create_advanced_schema(test, name):
    """
    Create a schema for the graph. The name of the graph
    is passed by parameter.
    """
    test.browser.find_link_by_href(
        '/graphs/' + name + '/').first.click()
    test.browser.is_text_present('Your Schema is empty.')
    spin_assert(lambda: test.assertEqual(test.browser.title, "SylvaDB - " + name))
    test.browser.find_link_by_href(
        '/schemas/' + name + '/').first.click()
    text = test.browser.find_by_xpath(
        "//div[@class='body-inside']/p").first.value
    spin_assert(lambda: test.assertEqual(text,
                                         'There are no types defined yet.'))
Пример #26
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'))
Пример #27
0
 def test_graph_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)
     self.browser.find_by_xpath("//div[@class='dashboard-graphs']/div/div/span[@class='graph-title']/a").first.click()
     add_permission(self, 'alice', CREATE_COLLAB)
     logout(self)
     signin(self, 'alice', 'alice_secret')
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     text = self.browser.find_by_xpath("//div[@class='graph-item']/span[@class='graph-title']/a").first.value
     spin_assert(lambda: self.assertEqual(text, "Bob's graph"))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #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
     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()
Пример #29
0
def create_type(test):
    """
    For use it after create_schema(). It creates a simple type in the schema.
    """
    test.browser.find_link_by_href("/schemas/bobs-graph/types/create/").first.click()
    text = test.browser.find_by_xpath("//div[@class='content2-first']/h2").first.value
    spin_assert(lambda: test.assertEqual(text, "Type"))
    test.browser.find_by_name("name").first.fill("Bob's type")
    test.browser.find_by_xpath("//div[@class='content2-first']/p/textarea[@name='description']").first.fill(
        "The loved type"
    )
    test.browser.find_by_name("properties-0-key").first.fill("Name")
    test.browser.find_by_name("properties-0-display").first.check()
    test.browser.find_by_value("Save Type").first.click()
    text = test.browser.find_by_id("diagramBoxField_bobs-graph.bobs-type.undefined").first.value
    spin_assert(lambda: test.assertEqual(text, "Name"))
Пример #30
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
     spin_assert(lambda: self.assertNotEqual(text.find("403"), -1))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #31
0
 def test_new_advanced_type_auto_user(self):
     create_graph(self)
     create_schema(self)
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='content2-first']/h2").first.value
     spin_assert(lambda: self.assertEqual(text, 'Type'))
     self.browser.find_by_name('name').first.fill("Bob's type")
     self.browser.find_by_id('advancedModeButton').first.click()
     self.browser.find_by_name('properties-0-key').first.fill('auto user name')
     self.browser.find_by_name('properties-0-display').first.check()
     self.browser.find_by_name('properties-0-required').first.check()
     self.browser.find_by_xpath("//select[@id='id_properties-0-datatype']/optgroup[@label='Auto']/option[@value='e']").first.click()
     self.browser.find_by_name('properties-0-order').first.fill('1')
     self.browser.find_by_name('properties-0-description').first.fill(
         "The name of this Bob's node")
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_id(
         'diagramBoxField_bobs-graph.bobs-type.undefined').first.value
     spin_assert(lambda: self.assertEqual(text, "auto user name"))
Пример #32
0
 def test_new_advanced_type_time_string(self):
     create_graph(self)
     create_schema(self)
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='content2-first']/h2").first.value
     spin_assert(lambda: self.assertEqual(text, 'Type'))
     self.browser.find_by_name('name').first.fill("Bob's type")
     self.browser.find_by_id('advancedModeButton').first.click()
     self.browser.find_by_name('properties-0-key').first.fill('Time name')
     self.browser.find_by_name('properties-0-display').first.check()
     self.browser.find_by_name('properties-0-required').first.check()
     self.browser.find_by_xpath("//select[@id='id_properties-0-datatype']/optgroup[@label='Advanced']/option[@value='t']").first.click()
     self.browser.find_by_name('properties-0-order').first.fill('1')
     self.browser.find_by_name('properties-0-description').first.fill(
         "The name of this Bob's node")
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_id(
         'diagramBoxField_bobs-graph.bobs-type.undefined').first.value
     spin_assert(lambda: self.assertEqual(text, "Time name"))
     # Testing data
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//td[@class='dataActions']/a[@class='dataOption new']").first.click()
     self.browser.find_by_name('Time name').first.fill('0123456789')
     sleep(5)  # Wating to the datepicker to open
     self.browser.find_by_xpath("//button[@class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all']").first.click()
     sleep(5)  # Waiting to the datepicker to close
     self.browser.find_by_value("Save Bob's type").first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'Enter a valid time.'))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #33
0
 def test_new_advanced_type_number_string(self):
     create_graph(self)
     create_schema(self)
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='content2-first']/h2").first.value
     spin_assert(lambda: self.assertEqual(text, 'Type'))
     self.browser.find_by_name('name').first.fill("Bob's type")
     self.browser.find_by_id('advancedModeButton').first.click()
     self.browser.find_by_name('properties-0-key').first.fill('Number name')
     self.browser.find_by_name('properties-0-display').first.check()
     self.browser.find_by_name('properties-0-required').first.check()
     self.browser.find_by_xpath(
         "//select[@id='id_properties-0-datatype']/optgroup[@label='Basic']/option[@value='n']"
     ).first.click()
     self.browser.find_by_name('properties-0-order').first.fill('1')
     self.browser.find_by_name('properties-0-description').first.fill(
         "The name of this Bob's node")
     self.browser.find_by_value('Save Type').first.click()
     text = self.browser.find_by_id(
         'diagramBoxField_bobs-graph.bobs-type.undefined').first.value
     spin_assert(lambda: self.assertEqual(text, "Number name"))
     # Testing data
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//td[@class='dataActions']/a[@class='dataOption new']"
     ).first.click()
     self.browser.find_by_name('Number name').first.fill('number')
     self.browser.find_by_value("Save Bob's type").first.click()
     text = self.browser.find_by_css('input:invalid').first.outer_html
     spin_assert(lambda: self.assertEqual(
         text,
         '<input id="id_Number name" name="Number name" type="number">'))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #34
0
def data_export_gexf(test):
    test.browser.find_by_id('toolsMenu').first.click()
    cookies = {
        test.browser.cookies.all()[0]["name"]:
        test.browser.cookies.all()[0]["value"],
        test.browser.cookies.all()[1]["name"]:
        test.browser.cookies.all()[1]["value"],
        test.browser.cookies.all()[2]["name"]:
        test.browser.cookies.all()[2]["value"]
    }
    result = requests.get(test.live_server_url +
                          '/tools/bobgraph/export/gexf/',
                          cookies=cookies)
    spin_assert(lambda: test.assertEqual(result.headers['content-type'],
                                         'application/xml'))
    spin_assert(
        lambda: test.assertEqual(test.browser.status_code.is_success(), True))
    fw = open('sylva/sylva/tests/files/gexf/bobs-graph.gexf', 'w')
    fw.write(result.content)
    fw.close()
    f = open('sylva/sylva/tests/files/gexf/bobs-graph.gexf')
    xmlFile = ""
    for line in f:
        xmlFile += line
    f.close()
    spin_assert(lambda: test.assertEqual(xmlFile, result.content))
Пример #35
0
def export_advanced_schema(test, name):
    """
    Export the schema for one graph. The name of the graph
    is passed by parameter.
    """
    test.browser.find_by_id('toolsMenu').first.click()
    cookies = {
        test.browser.cookies.all()[0]["name"]:
        test.browser.cookies.all()[0]["value"],
        test.browser.cookies.all()[1]["name"]:
        test.browser.cookies.all()[1]["value"],
        test.browser.cookies.all()[2]["name"]:
        test.browser.cookies.all()[2]["value"]
    }
    result = requests.get(test.live_server_url + '/schemas/' + name +
                          '/export/',
                          cookies=cookies)
    spin_assert(lambda: test.assertEqual(result.headers['content-type'],
                                         'application/json'))
    spin_assert(
        lambda: test.assertEqual(test.browser.status_code.is_success(), True))
    fw = open('sylva/sylva/tests/files/gexf/' + name + '_schema.json', 'w')
    fw.write(result.content)
    fw.close()
    f = open('sylva/sylva/tests/files/gexf/' + name + '_schema.json')
    spin_assert(
        lambda: test.assertEqual(f.read().split("\n")[0], result.content))
Пример #36
0
 def test_data_change_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)
     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()
     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()
Пример #37
0
 def test_user_change_mail(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/email/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Welcome to The Sylva Project'))
     self.browser.find_by_name('email').fill('*****@*****.**')
     self.browser.find_by_value('Change email').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Email verification'))
Пример #38
0
 def test_user_change_mail_empty(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/email/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Welcome to The Sylva Project'))
     self.browser.find_by_name('email').fill('')
     self.browser.find_by_value('Change email').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'This field is required.'))
Пример #39
0
 def test_graph_export_gexf_autouser(self):
     # Create a graph with an auto_increment property
     create_graph(self, self.firstGraphName)
     create_advanced_schema(self, self.firstGraphName)
     create_advanced_type(self, self.firstGraphName, "e")
     create_advanced_data(self)
     # Schema export
     export_advanced_schema(self, self.firstGraphName)
     # Data export in gexf format
     data_export_gexf(self)
     # Create new graph for import the data
     import_advanced_schema(self, self.firstGraphName, self.secondGraphName)
     # Data import
     data_import_gexf(self)
     bobgraph = Graph.objects.get(name=self.firstGraphName)
     alicegraph = Graph.objects.get(name=self.secondGraphName)
     alicegraphNodes = alicegraph.nodes.count()
     spin_assert(lambda: self.assertEqual(bobgraph.nodes.count(),
                                          alicegraph.nodes.count()))
     spin_assert(lambda: self.assertEqual(bobgraph.relationships.count(),
                                          alicegraph.relationships.count()))
     # Add new nodes and relationships and check all is correct
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//a[@class='dataOption new']").first.click()
     text = self.browser.find_by_id('propertiesTitle').first.value
     spin_assert(lambda: self.assertEqual(text, 'Properties'))
     self.browser.find_by_value("Save Bob's type").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='pagination']/span[@class='pagination-info']"
     ).first.value
     spin_assert(lambda: self.assertNotEqual(
         text.find(" elements Bob's type."), -1))
     spin_assert(lambda: self.assertEqual(alicegraphNodes + 1,
                                          alicegraph.nodes.count()))
     # Destroy the databases
     Graph.objects.get(name=self.firstGraphName).destroy()
     Graph.objects.get(name=self.secondGraphName).destroy()
Пример #40
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))
Пример #41
0
def create_advanced_type(test, name, datatype):
    """
    Create a type for the graph. The name of the graph
    is passed by parameter and the datatype too.
    """
    test.browser.find_link_by_href('/schemas/' + name +
                                   '/types/create/').first.click()
    text = test.browser.find_by_xpath(
        "//div[@class='content2-first']/h2").first.value
    spin_assert(lambda: test.assertEqual(text, 'Type'))
    test.browser.find_by_name('name').first.fill("Bob's type")
    test.browser.find_by_xpath(
        "//div[@class='content2-first']/p/textarea[@name='description']"
    ).first.fill('The loved type')
    test.browser.find_by_name('properties-0-key').first.fill('Name')
    test.browser.find_by_name('properties-0-display').first.check()
    test.browser.find_by_id('advancedModeButton').first.click()
    test.browser.find_by_xpath("//optgroup[@label='Auto']/option[@value='" +
                               datatype + "']").first.click()
    test.browser.find_by_value('Save Type').first.click()
    text = test.browser.find_by_id(
        'diagramBoxField_bobgraph.bobs-type.undefined').first.value
    spin_assert(lambda: test.assertEqual(text, "Name"))
Пример #42
0
 def test_dashboard_graph_preview(self):
     """
     This test, after create a graph with data, checks the Sigma
     visualization running a simple JavaScript code. This code gets the
     current instance of Sigma and checks the data with Sylva JavaScript
     object.
     """
     signin(self, 'bob', 'bob_secret')
     create_graph(self)
     create_schema(self)
     create_type(self)
     create_data(self)
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     self.browser.is_element_present_by_id('wait_for_js', 3)
     js_code = '''
         var instance = sigma.instances(0);
         var node = instance.graph.nodes()[0];
         sylva.test_node_name = node.properties.Name;
         '''
     self.browser.execute_script(js_code)
     text = self.browser.evaluate_script('sylva.test_node_name')
     Graph.objects.get(name="Bob's graph").destroy()
     spin_assert(lambda: self.assertNotEqual(text.find("Bob's node"), -1))
Пример #43
0
 def test_data_add_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', DATA_VIEW)
     add_permission(self, 'alice', DATA_ADD)
     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()
     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
     spin_assert(lambda: self.assertEqual(text, "Alice's node"))
     Graph.objects.get(name="Bob's graph").destroy()
Пример #44
0
 def test_user_change_pass_incorrectly(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/password/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Change password'))
     self.browser.find_by_name('old_password').fill('bad_password')
     self.browser.find_by_name('new_password1').fill('bob_password')
     self.browser.find_by_name('new_password2').fill('bob_password')
     self.browser.find_by_value('Change password').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'Your old password was entered incorrectly. Please enter it again.'))
     logout(self)
Пример #45
0
 def test_user_change_new_pass_empty(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/password/').first.click()
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Change password'))
     self.browser.find_by_name('old_password').fill('bob_secret')
     self.browser.find_by_name('new_password1').fill('')
     self.browser.find_by_name('new_password2').fill('bob_password')
     self.browser.find_by_value('Change password').first.click()
     text = self.browser.find_by_xpath("//ul[@class='errorlist']/li").first.text
     spin_assert(lambda: self.assertEqual(text, 'This field is required.'))
     logout(self)
Пример #46
0
 def test_user_change_pass(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Dashboard'))
     self.browser.find_link_by_href('/accounts/bob/').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          "SylvaDB - bob's profile."))
     self.browser.find_link_by_href('/accounts/bob/password/').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Change password'))
     self.browser.find_by_name('old_password').fill('bob_secret')
     self.browser.find_by_name('new_password1').fill('bob_password')
     self.browser.find_by_name('new_password2').fill('bob_password')
     self.browser.find_by_value('Change password').first.click()
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Password changed'))
     logout(self)
Пример #47
0
 def test_schema_allowed_rel_addition(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))
Пример #48
0
def create_graph(test, name):
    """
    Create a graph with the name passed by parameter
    """
    test.browser.visit(test.live_server_url + '/graphs/create/')
    text = test.browser.find_by_xpath(
        "//header[@class='global']/h2").first.value
    spin_assert(lambda: test.assertNotEqual(text.find('Create New Graph'), -1))
    spin_assert(lambda: test.assertEqual(text, 'Create New Graph'))
    test.browser.find_by_name('name').first.fill(name)
    test.browser.find_by_xpath(
        "//form[@name='graphs_create']/p/textarea[@name='description']"
    ).first.fill('The loved graph')
    test.browser.find_by_name('addGraph').first.click()
    text = test.browser.find_by_xpath(
        "//header[@class='global']/h1").first.value
    spin_assert(lambda: test.assertEqual(text, 'Dashboard'))
    text = test.browser.find_link_by_href('/graphs/' + name + '/').first.value
    spin_assert(lambda: test.assertEqual(text, name))
Пример #49
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))
Пример #50
0
def create_graph(test):
    test.browser.visit(test.live_server_url + '/graphs/create/')
    text = test.browser.find_by_xpath(
        "//header[@class='global']/h2").first.value
    spin_assert(lambda: test.assertNotEqual(text.find('Create New Graph'), -1))
    test.browser.find_by_name('name').first.fill("Bob's graph")
    test.browser.find_by_xpath(
        "//form[@name='graphs_create']/p/textarea[@name='description']"
    ).first.fill('The loved graph')
    test.browser.find_by_name('addGraph').first.click()
    text = test.browser.find_by_xpath(
        "//header[@class='global']/h1").first.value
    spin_assert(lambda: test.assertEqual(text, 'Dashboard'))
    text = test.browser.find_link_by_href('/graphs/bobs-graph/').first.value
    spin_assert(lambda: test.assertEqual(text, "Bob's graph"))
Пример #51
0
 def test_node_rel_count_four(self):
     '''
     This test show that when there are reflexive incoming `relationships`
     only count those.
     '''
     real_nodes = 0
     real_rels = 0
     create_graph(self)
     create_schema(self)
     # Creating a nodetype: "First"
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     self.browser.find_by_name('name').first.fill("First")
     self.browser.find_by_name('properties-0-key').first.fill('Name')
     self.browser.find_by_name('properties-0-display').first.check()
     self.browser.find_by_value('Save Type').first.click()
     # Creating another nodetype: "Second"
     self.browser.find_link_by_href(
         '/schemas/bobs-graph/types/create/').first.click()
     self.browser.find_by_name('name').first.fill("Second")
     self.browser.find_by_name('properties-0-key').first.fill('Name')
     self.browser.find_by_name('properties-0-display').first.check()
     self.browser.find_by_value('Save Type').first.click()
     self.browser.find_by_id('dataMenu').first.click()
     # Creating an allowed relationship: "First -> First"
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('FirstToFirst')
     self.browser.select('target', '1')
     self.browser.find_by_value('Save Type').first.click()
     # Creating an allowed relationship: "First -> Second"
     self.browser.find_by_id('allowedRelations').first.click()
     self.browser.select('source', '1')
     self.browser.find_by_name('name').fill('FirstToSecond')
     self.browser.select('target', '2')
     self.browser.find_by_value('Save Type').first.click()
     # Creating a node of the "First" type
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[0].click()
     self.browser.find_by_name('Name').first.fill("First1")
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Creating another node of the "First" type
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[0].click()
     self.browser.find_by_name('Name').first.fill("First2")
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Creating a node of the "Second" type
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[1].click()
     self.browser.find_by_name('Name').first.fill("Second1")
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Creating another node of the "Second" type
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[1].click()
     self.browser.find_by_name('Name').first.fill("Second2")
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Creating another node of the "Second" type
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[1].click()
     self.browser.find_by_name('Name').first.fill("Second3")
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Editing the "First1" node
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption list']")[0].click()
     self.browser.find_by_xpath(
         "//td[@class='dataList']/a[@class='edit']").first.click()
     # Adding more "FirstToSecond" relationship forms
     self.browser.find_by_xpath(
         "//a[@class='addButton inFormsets']")[1].click()
     self.browser.find_by_xpath(
         "//a[@class='addButton inFormsets']")[1].click()
     # Adding the relationships
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[0].fill('First2')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[1].fill('Second1')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[2].fill('Second2')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[3].fill('Second3')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     # Saving "First1"
     self.browser.find_by_value('Save First').first.click()
     # Creating another node of the "First" type with relationships
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath("//a[@class='dataOption new']")[0].click()
     self.browser.find_by_name('Name').first.fill("First3")
     # Adding more "FirstToSecond" relationship forms
     self.browser.find_by_xpath(
         "//a[@class='addButton inFormsets']")[1].click()
     self.browser.find_by_xpath(
         "//a[@class='addButton inFormsets']")[1].click()
     self.browser.find_by_xpath(
         "//a[@class='addButton inFormsets']")[2].click()
     # Adding the relationships
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[1].fill('Second1')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[2].fill('Second2')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[3].fill('Second3')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[4].fill('First1')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     self.browser.find_by_xpath(
         "//li[@class='token-input-input-token']/input")[5].fill('First2')
     self.browser.is_element_present_by_id("id_user_wait", 3)
     self.browser.find_by_xpath(
         "//div[@class='token-input-dropdown']//li[@class='token-input-dropdown-item2 token-input-selected-dropdown-item']/b"
     ).first.click()
     real_rels += 1
     # Saving "First3"
     self.browser.find_by_xpath(
         "//span[@class='buttonLinkOption buttonLinkLeft']/input"
     ).first.click()
     real_nodes += 1
     # Checking the counts
     self.browser.find_link_by_href('/graphs/bobs-graph/').first.click()
     nodes = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-nodes']"
     ).first.value
     rels = self.browser.find_by_xpath(
         "//div[@class='flags-block']/span[@class='graph-relationships']"
     ).first.value
     spin_assert(
         lambda: self.assertEqual(str(real_nodes) + " nodes", nodes))
     spin_assert(
         lambda: self.assertEqual(str(real_rels) + " relationships", rels))
Пример #52
0
 def test_graph_export_csv(self):
     # Create a graph with a auto_user property
     create_graph(self, self.firstGraphName)
     create_advanced_schema(self, self.firstGraphName)
     create_advanced_type(self, self.firstGraphName, "e")
     create_advanced_data(self)
     # Create new graph for import the data
     import_advanced_schema_csv(self, self.firstGraphName,
                                self.secondGraphName)
     # Data import
     self.browser.find_by_id('toolsMenu').first.click()
     self.browser.find_link_by_href('/tools/' + self.secondGraphName +
                                    '/import/').first.click()
     self.browser.find_by_id('csv-radio').first.click()
     # Change the display field of input to attach the file
     script = """
         $('#files').css('display', '');
         """
     self.browser.execute_script(script)
     self.browser.is_text_present('Drop your nodes files here',
                                  wait_time=10)
     # Import the nodes
     file_path = os.path.join(os.path.abspath(os.path.dirname(__file__)),
                              'files/csv/bobs-type.csv')
     self.browser.attach_file('file', file_path)
     self.browser.is_text_present(
         'Nodes files loaded. Loading edges files...', wait_time=10)
     # Wait until the data is imported
     self.browser.is_text_present('Now drop your edges files', wait_time=10)
     # Change the display field of input to attach the file
     script = """
         $('#files2').css('display', '');
         """
     self.browser.execute_script(script)
     # Import the relationships
     file_path = os.path.join(os.path.abspath(os.path.dirname(__file__)),
                              'files/csv/bobs-rels.csv')
     self.browser.attach_file('file2', file_path)
     self.browser.is_text_present('Data loaded. Uploading to the server...',
                                  wait_time=10)
     # Wait until the data is imported
     self.browser.is_text_present('Data uploaded.', wait_time=10)
     # Check that nodes and relationships are ok
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//a[@class='dataOption list']").first.click()
     alicegraph = Graph.objects.get(name=self.secondGraphName)
     alicegraphNodes = alicegraph.nodes.count()
     spin_assert(lambda: self.assertEqual(3, alicegraph.nodes.count()))
     spin_assert(
         lambda: self.assertEqual(1, alicegraph.relationships.count()))
     # Add new nodes and relationships and check all is correct
     self.browser.find_by_id('dataMenu').first.click()
     self.browser.find_by_xpath(
         "//a[@class='dataOption new']").first.click()
     text = self.browser.find_by_id('propertiesTitle').first.value
     spin_assert(lambda: self.assertEqual(text, 'Properties'))
     self.browser.find_by_value("Save Bob's type").first.click()
     text = self.browser.find_by_xpath(
         "//div[@class='pagination']/span[@class='pagination-info']"
     ).first.value
     spin_assert(lambda: self.assertNotEqual(
         text.find(" elements Bob's type."), -1))
     spin_assert(lambda: self.assertEqual(alicegraphNodes + 1,
                                          alicegraph.nodes.count()))
     # Destroy the databases
     Graph.objects.get(name=self.firstGraphName).destroy()
     Graph.objects.get(name=self.secondGraphName).destroy()
Пример #53
0
 def test_user_signup(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     spin_assert(lambda: self.assertEqual(self.browser.find_by_css('.body-inside').first.value, 'Thank you for signing up with us!\nYou can now use the supplied credentials to signin.'))
     spin_assert(lambda: self.assertEqual(
         self.browser.title, 'SylvaDB - Signup almost done!'))
Пример #54
0
 def test_user_signin(self):
     signup(self, 'bob', '*****@*****.**', 'bob_secret')
     signin(self, 'bob', 'bob_secret')
     spin_assert(lambda: self.assertEqual(self.browser.title,
                                          'SylvaDB - Dashboard'))
     logout(self)