Skip to content

Commit 721fc3c

Browse files
XD-DENGashb
authored andcommitted
[AIRFLOW-3432] Add test for feature "Delete DAG in UI" (apache#4266)
Related Commits: 1. [AIRFLOW-2657](PR apache#3531) 2. [AIRFLOW-3233](PR apache#4069) Added for both www/ and www_rbac
1 parent 405155a commit 721fc3c

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

tests/www/test_views.py

+33
Original file line numberDiff line numberDiff line change
@@ -790,5 +790,38 @@ def test_start_date_filter(self):
790790
self.assertEqual(resp.status_code, 200)
791791

792792

793+
class TestDeleteDag(unittest.TestCase):
794+
795+
def setUp(self):
796+
conf.load_test_config()
797+
app = application.create_app(testing=True)
798+
app.config['WTF_CSRF_METHODS'] = []
799+
self.app = app.test_client()
800+
801+
def test_delete_dag_button_normal(self):
802+
resp = self.app.get('/', follow_redirects=True)
803+
self.assertIn('/delete?dag_id=example_bash_operator', resp.data.decode('utf-8'))
804+
self.assertIn("return confirmDeleteDag('example_bash_operator')", resp.data.decode('utf-8'))
805+
806+
def test_delete_dag_button_for_dag_on_scheduler_only(self):
807+
# Test for JIRA AIRFLOW-3233 (PR 4069):
808+
# The delete-dag URL should be generated correctly for DAGs
809+
# that exist on the scheduler (DB) but not the webserver DagBag
810+
811+
test_dag_id = "non_existent_dag"
812+
813+
session = Session()
814+
DM = models.DagModel
815+
session.query(DM).filter(DM.dag_id == 'example_bash_operator').update({'dag_id': test_dag_id})
816+
session.commit()
817+
818+
resp = self.app.get('/', follow_redirects=True)
819+
self.assertIn('/delete?dag_id={}'.format(test_dag_id), resp.data.decode('utf-8'))
820+
self.assertIn("return confirmDeleteDag('{}')".format(test_dag_id), resp.data.decode('utf-8'))
821+
822+
session.query(DM).filter(DM.dag_id == test_dag_id).update({'dag_id': 'example_bash_operator'})
823+
session.commit()
824+
825+
793826
if __name__ == '__main__':
794827
unittest.main()

tests/www_rbac/test_views.py

+23
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,29 @@ def test_refresh(self):
426426
resp = self.client.get('refresh?dag_id=example_bash_operator')
427427
self.check_content_in_response('', resp, resp_code=302)
428428

429+
def test_delete_dag_button_normal(self):
430+
resp = self.client.get('/', follow_redirects=True)
431+
self.check_content_in_response('/delete?dag_id=example_bash_operator', resp)
432+
self.check_content_in_response("return confirmDeleteDag('example_bash_operator')", resp)
433+
434+
def test_delete_dag_button_for_dag_on_scheduler_only(self):
435+
# Test for JIRA AIRFLOW-3233 (PR 4069):
436+
# The delete-dag URL should be generated correctly for DAGs
437+
# that exist on the scheduler (DB) but not the webserver DagBag
438+
439+
test_dag_id = "non_existent_dag"
440+
441+
DM = models.DagModel
442+
self.session.query(DM).filter(DM.dag_id == 'example_bash_operator').update({'dag_id': test_dag_id})
443+
self.session.commit()
444+
445+
resp = self.client.get('/', follow_redirects=True)
446+
self.check_content_in_response('/delete?dag_id={}'.format(test_dag_id), resp)
447+
self.check_content_in_response("return confirmDeleteDag('{}')".format(test_dag_id), resp)
448+
449+
self.session.query(DM).filter(DM.dag_id == test_dag_id).update({'dag_id': 'example_bash_operator'})
450+
self.session.commit()
451+
429452

430453
class TestConfigurationView(TestBase):
431454

0 commit comments

Comments
 (0)