Skip to content

Commit e182b17

Browse files
committed
[tests] Added tests
1 parent 9960afc commit e182b17

File tree

3 files changed

+76
-2
lines changed

3 files changed

+76
-2
lines changed

openwisp_controller/config/templates/admin/config/device/delete_confirmation.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ <h2>{% translate "Objects" %}</h2>
3030
<form method="post">{% csrf_token %}
3131
<div>
3232
<input type="hidden" name="post" value="yes">
33-
<input type="hidden" name="force_delete" value="false">
3433
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %}
3534
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">{% endif %}
3635
<input type="submit" value="{% translate 'Yes, I’m sure' %}">
36+
{% if deactivating_warning %}<input type="hidden" name="force_delete" value="false">{% endif %}
3737
<a href="#" class="button cancel-link">{% translate "No, take me back" %}</a>
3838
</div>
3939
</form>

openwisp_controller/config/tests/test_selenium.py

+74
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
from selenium.webdriver.common.by import By
1111
from selenium.webdriver.support import expected_conditions as EC
1212
from selenium.webdriver.support.ui import Select, WebDriverWait
13+
from swapper import load_model
1314

1415
from openwisp_utils.test_selenium_mixins import SeleniumTestMixin
1516

1617
from .utils import CreateConfigTemplateMixin, TestWireguardVpnMixin
1718

19+
Device = load_model('config', 'Device')
20+
1821

1922
class SeleniumBaseMixin(CreateConfigTemplateMixin, SeleniumTestMixin):
2023
def setUp(self):
@@ -286,6 +289,77 @@ def test_template_context_variables(self):
286289
alert.accept()
287290
self.fail('Unsaved changes alert displayed without any change')
288291

292+
def test_force_delete_device_with_deactivating_config(self):
293+
self._create_template(default=True)
294+
config = self._create_config(organization=self._get_org())
295+
device = config.device
296+
self.assertEqual(device.is_deactivated(), False)
297+
self.assertEqual(config.status, 'modified')
298+
299+
self.login()
300+
self.open(reverse('admin:config_device_change', args=[device.id]))
301+
self.web_driver.find_elements(
302+
by=By.CSS_SELECTOR, value='input.deletelink[type="submit"]'
303+
)[-1].click()
304+
device.refresh_from_db()
305+
config.refresh_from_db()
306+
self.assertEqual(device.is_deactivated(), True)
307+
self.assertEqual(config.is_deactivating(), True)
308+
309+
self.open(reverse('admin:config_device_change', args=[device.id]))
310+
self.web_driver.find_elements(by=By.CSS_SELECTOR, value='a.deletelink')[
311+
-1
312+
].click()
313+
WebDriverWait(self.web_driver, 5).until(
314+
EC.visibility_of_element_located(
315+
(By.CSS_SELECTOR, '#deactivating-warning .messagelist .warning p')
316+
)
317+
)
318+
self.web_driver.find_element(by=By.CSS_SELECTOR, value='#warning-ack').click()
319+
delete_confirm = WebDriverWait(self.web_driver, 2).until(
320+
EC.visibility_of_element_located(
321+
(By.CSS_SELECTOR, 'form[method="post"] input[type="submit"]')
322+
)
323+
)
324+
delete_confirm.click()
325+
self.assertEqual(Device.objects.count(), 0)
326+
327+
def test_force_delete_multiple_devices_with_deactivating_config(self):
328+
self._create_template(default=True)
329+
org = self._get_org()
330+
device1 = self._create_device(organization=org)
331+
config1 = self._create_config(device=device1)
332+
device2 = self._create_device(
333+
organization=org, name='test2', mac_address='22:22:22:22:22:22'
334+
)
335+
config2 = self._create_config(device=device2)
336+
self.assertEqual(device1.is_deactivated(), False)
337+
self.assertEqual(config1.status, 'modified')
338+
self.assertEqual(device2.is_deactivated(), False)
339+
self.assertEqual(config2.status, 'modified')
340+
341+
self.login()
342+
self.open(reverse('admin:config_device_changelist'))
343+
self.web_driver.find_element(by=By.CSS_SELECTOR, value='#action-toggle').click()
344+
select = Select(self.web_driver.find_element(by=By.NAME, value='action'))
345+
select.select_by_value('delete_selected')
346+
self.web_driver.find_element(
347+
by=By.CSS_SELECTOR, value='button[type="submit"][name="index"][value="0"]'
348+
).click()
349+
WebDriverWait(self.web_driver, 5).until(
350+
EC.visibility_of_element_located(
351+
(By.CSS_SELECTOR, '#deactivating-warning .messagelist .warning p')
352+
)
353+
)
354+
self.web_driver.find_element(by=By.CSS_SELECTOR, value='#warning-ack').click()
355+
delete_confirm = WebDriverWait(self.web_driver, 2).until(
356+
EC.visibility_of_element_located(
357+
(By.CSS_SELECTOR, 'form[method="post"] input[type="submit"]')
358+
)
359+
)
360+
delete_confirm.click()
361+
self.assertEqual(Device.objects.count(), 0)
362+
289363

290364
class TestVpnAdmin(SeleniumBaseMixin, TestWireguardVpnMixin, StaticLiveServerTestCase):
291365
def test_vpn_edit(self):

openwisp_controller/tests/test_selenium.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def test_restoring_deleted_device(self, *args):
5757
reverse(f'admin:{self.config_app_label}_device_delete', args=[device.id])
5858
)
5959
self.web_driver.find_element(
60-
by=By.XPATH, value='//*[@id="content"]/form/div/input[2]'
60+
by=By.CSS_SELECTOR, value='#content form input[type="submit"]'
6161
).click()
6262
self.assertEqual(Device.objects.count(), 0)
6363
self.assertEqual(DeviceConnection.objects.count(), 0)

0 commit comments

Comments
 (0)