Skip to content

Commit c452ebc

Browse files
XD-DENGAlice Berard
authored and
Alice Berard
committed
[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 429f200 commit c452ebc

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
@@ -788,5 +788,38 @@ def test_start_date_filter(self):
788788
self.assertEqual(resp.status_code, 200)
789789

790790

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

tests/www_rbac/test_views.py

+23
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,29 @@ def test_refresh(self):
446446
resp = self.client.get('refresh?dag_id=example_bash_operator')
447447
self.check_content_in_response('', resp, resp_code=302)
448448

449+
def test_delete_dag_button_normal(self):
450+
resp = self.client.get('/', follow_redirects=True)
451+
self.check_content_in_response('/delete?dag_id=example_bash_operator', resp)
452+
self.check_content_in_response("return confirmDeleteDag('example_bash_operator')", resp)
453+
454+
def test_delete_dag_button_for_dag_on_scheduler_only(self):
455+
# Test for JIRA AIRFLOW-3233 (PR 4069):
456+
# The delete-dag URL should be generated correctly for DAGs
457+
# that exist on the scheduler (DB) but not the webserver DagBag
458+
459+
test_dag_id = "non_existent_dag"
460+
461+
DM = models.DagModel
462+
self.session.query(DM).filter(DM.dag_id == 'example_bash_operator').update({'dag_id': test_dag_id})
463+
self.session.commit()
464+
465+
resp = self.client.get('/', follow_redirects=True)
466+
self.check_content_in_response('/delete?dag_id={}'.format(test_dag_id), resp)
467+
self.check_content_in_response("return confirmDeleteDag('{}')".format(test_dag_id), resp)
468+
469+
self.session.query(DM).filter(DM.dag_id == test_dag_id).update({'dag_id': 'example_bash_operator'})
470+
self.session.commit()
471+
449472

450473
class TestConfigurationView(TestBase):
451474
def test_configuration_do_not_expose_config(self):

0 commit comments

Comments
 (0)