Skip to content

Commit e6c7337

Browse files
authored
Merge pull request #1170 from dr3dd589/EngagementUnitest
Engagement unit test
2 parents cf9708a + 7cab996 commit e6c7337

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

tests/Engagement_unit_test.py

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
from selenium import webdriver
2+
from selenium.webdriver.support.ui import Select
3+
import unittest
4+
import re
5+
import sys
6+
import os
7+
8+
9+
dir_path = os.path.dirname(os.path.realpath(__file__))
10+
try: # First Try for python 3
11+
import importlib.util
12+
product_unit_test_module = importlib.util.spec_from_file_location("product_selenium_unittest",
13+
os.path.join(dir_path, 'product_selenium_unittest.py')) # using ',' allows python to determine the type of separator to use.
14+
product_unit_test = importlib.util.module_from_spec(product_unit_test_module)
15+
product_unit_test_module.loader.exec_module(product_unit_test)
16+
except: # This will work for python2 if above fails
17+
import imp
18+
product_unit_test = imp.load_source('product_selenium_unittest',
19+
os.path.join(dir_path, 'product_selenium_unittest.py'))
20+
21+
22+
class EngagementTest(unittest.TestCase):
23+
def setUp(self):
24+
self.driver = webdriver.Chrome('chromedriver')
25+
self.driver.implicitly_wait(30)
26+
self.base_url = "http://localhost:8000/"
27+
self.verificationErrors = []
28+
self.accept_next_alert = True
29+
30+
def login_page(self):
31+
driver = self.driver
32+
driver.get(self.base_url + "login")
33+
driver.find_element_by_id("id_username").clear()
34+
driver.find_element_by_id("id_username").send_keys(os.environ['DD_ADMIN_USER'])
35+
driver.find_element_by_id("id_password").clear()
36+
driver.find_element_by_id("id_password").send_keys(os.environ['DD_ADMIN_PASSWORD'])
37+
driver.find_element_by_css_selector("button.btn.btn-success").click()
38+
return driver
39+
40+
def test_add_new_engagement(self):
41+
driver = self.login_page()
42+
driver.get(self.base_url + "product")
43+
driver.find_element_by_class_name("pull-left").click()
44+
driver.find_element_by_link_text("Add New Engagement").click()
45+
driver.find_element_by_id("id_name").send_keys("test engagement")
46+
driver.find_element_by_id("id_name").send_keys("\tthis is engagement test.")
47+
driver.find_element_by_id("id_test_strategy").clear()
48+
driver.find_element_by_id('id_test_strategy').send_keys("http://localhost:5000")
49+
Select(driver.find_element_by_id("id_status")).select_by_visible_text("In Progress")
50+
driver.find_element_by_css_selector("input[value='Done']").click()
51+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
52+
self.assertTrue(re.search(r'Engagement added successfully.', EngagementTXT))
53+
54+
def test_edit_created_new_engagement(self):
55+
driver = self.login_page()
56+
driver.get(self.base_url + "product")
57+
driver.find_element_by_class_name("pull-left").click()
58+
driver.find_element_by_link_text("View Engagements").click()
59+
driver.find_element_by_link_text("test engagement").click()
60+
driver.find_element_by_id("dropdownMenu1").click()
61+
driver.find_element_by_link_text("Edit Engagement").click()
62+
driver.find_element_by_id("id_name").clear()
63+
driver.find_element_by_id("id_name").send_keys("edited test engagement")
64+
Select(driver.find_element_by_id("id_status")).select_by_visible_text("In Progress")
65+
driver.find_element_by_css_selector("input[value='Done']").click()
66+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
67+
self.assertTrue(re.search(r'Engagement updated successfully.', EngagementTXT))
68+
69+
def test_engagement_import_scan_result(self):
70+
driver = self.login_page()
71+
driver.get(self.base_url + "product")
72+
driver.find_element_by_class_name("pull-left").click()
73+
driver.find_element_by_link_text('View Engagements').click()
74+
driver.find_element_by_link_text("edited test engagement").click()
75+
driver.find_elements_by_id("dropdownMenu1")[1].click()
76+
driver.find_element_by_link_text('Import Scan Results').click()
77+
driver.find_element_by_id('id_active').get_attribute('checked')
78+
driver.find_element_by_id('id_verified').get_attribute('checked')
79+
Select(driver.find_element_by_id("id_scan_type")).select_by_visible_text("Nmap Scan")
80+
driver.find_element_by_id('id_file').send_keys(os.getcwd().replace('/tests', '') + "/dojo/unittests/scans/nmap_sample/nmap_multiple_port.xml")
81+
driver.find_element_by_css_selector("input.btn.btn-primary").click()
82+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
83+
self.assertTrue(re.search(r'Nmap Scan processed, a total of 13 findings were processed', EngagementTXT))
84+
85+
def test_close_new_engagement(self):
86+
driver = self.login_page()
87+
driver.get(self.base_url + "product")
88+
driver.find_element_by_class_name("pull-left").click()
89+
driver.find_element_by_link_text("View Engagements").click()
90+
driver.find_element_by_link_text("edited test engagement").click()
91+
driver.find_element_by_id("dropdownMenu1").click()
92+
driver.find_element_by_link_text("Close Engagement").click()
93+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
94+
self.assertTrue(re.search(r'Engagement closed successfully.', EngagementTXT))
95+
96+
def test_delete_new_closed_engagement(self):
97+
driver = self.login_page()
98+
driver.get(self.base_url + "product")
99+
driver.find_element_by_class_name("pull-left").click()
100+
driver.find_element_by_link_text('View Engagements').click()
101+
driver.find_element_by_link_text("edited test engagement").click()
102+
driver.find_element_by_id("dropdownMenu1").click()
103+
driver.find_element_by_link_text('Delete Engagement').click()
104+
driver.find_element_by_name('delete_name').click()
105+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
106+
self.assertTrue(re.search(r'Engagement and relationships removed.', EngagementTXT))
107+
108+
def test_new_ci_cd_engagement(self):
109+
driver = self.login_page()
110+
driver.get(self.base_url + "product")
111+
driver.find_element_by_link_text('QA Test').click()
112+
driver.find_element_by_xpath("//a[@class='dropdown-toggle active']//span[@class='hidden-xs']").click()
113+
driver.find_element_by_link_text('Add New CI/CD Engagement').click()
114+
driver.find_element_by_id("id_name").send_keys("test new ci/cd engagement")
115+
driver.find_element_by_id("id_name").send_keys("\ttest new ci/cd engagement")
116+
driver.find_element_by_id('id_deduplication_on_engagement').get_attribute('checked')
117+
driver.find_element_by_css_selector("input[value='Done']").click()
118+
EngagementTXT = driver.find_element_by_tag_name("BODY").text
119+
self.assertTrue(re.search(r'Engagement added successfully.', EngagementTXT))
120+
121+
def tearDown(self):
122+
self.driver.quit()
123+
self.assertEqual([], self.verificationErrors)
124+
125+
126+
def suite():
127+
suite = unittest.TestSuite()
128+
suite.addTest(product_unit_test.ProductTest('test_create_product'))
129+
suite.addTest(EngagementTest('test_add_new_engagement'))
130+
suite.addTest(EngagementTest('test_edit_created_new_engagement'))
131+
suite.addTest(EngagementTest('test_engagement_import_scan_result'))
132+
suite.addTest(EngagementTest('test_close_new_engagement'))
133+
suite.addTest(EngagementTest('test_delete_new_closed_engagement'))
134+
suite.addTest(EngagementTest('test_new_ci_cd_engagement'))
135+
suite.addTest(product_unit_test.ProductTest('test_delete_product'))
136+
return suite
137+
138+
139+
if __name__ == "__main__":
140+
runner = unittest.TextTestRunner(descriptions=True, failfast=True)
141+
ret = not runner.run(suite()).wasSuccessful()
142+
sys.exit(ret)

0 commit comments

Comments
 (0)