class TestEventAdmin(TestCase): fixtures = ['user'] def setUp(self): self.maxDiff = None self.data = {'username': '******', 'password': '******'} self.headers = { 'connection': 'keep-alive', 'accept-language': 'en-US,en;q=0.8', 'accept-encoding': 'gzip,deflate,br', 'cache-control': 'max-age=0', 'content-type': 'application/x-www-form-urlencoded', 'content-length': len(dumps(self.data)), 'accept': 'text/html;q=0.9,image/webp,image/apng,*/*;q=0.8' } self.c = Client(enforce_csrf_check=True) self.site = AdminSite() self.request = MockRequest() self.request.user = MockSuperUser() def tearDown(self): self.data = {} self.headers = {} self.c = None self.site = None self.request = None def test_01_event_visible(self): url = '/admin/' user = User.objects.get(username=self.data['username']) response = self.c.get(path=url, follow=True) self.assertEqual(200, response.status_code) self.assertTrue(response.csrf_cookie_set) self.assertTrue(self.c.login(**self.data)) url = '/admin/complex/event/' response = self.c.get(path=url, headers=self.headers, follow=True) self.assertEqual(200, response.status_code) self.assertEqual('OK', response.reason_phrase) soup = BeautifulSoup(response.content, 'html.parser') self.assertEqual('Select event to change | Django site admin', soup.title.string) self.assertIsNone(self.c.logout()) def test_02_event_list_display(self): list_display = ('sensor', 'timestamp', 'location', 'status', 'camera', 'avg_temp', 'avg_pressure', 'pct_humidity', 'altitude', 'windspeed') self.assertTupleEqual(list_display, EventAdmin.list_display) def test_03_event_list_filter(self): list_filter = ('sensor', 'location') self.assertTupleEqual(list_filter, EventAdmin.list_filter) def test_04_event_search_fields(self): search_fields = ('sensor', 'timestamp', 'location', 'status') self.assertTupleEqual(search_fields, EventAdmin.search_fields) def test_05_event_fields(self): fields = ('sensor', 'timestamp', 'location', 'status', 'camera', 'avg_temp', 'avg_pressure', 'pct_humidity', 'altitude', 'windspeed') self.assertTupleEqual(fields, EventAdmin.fields) def test_06_event_date_hierarchy(self): date_hierarchy = 'timestamp' self.assertEqual(date_hierarchy, EventAdmin.date_hierarchy) def test_07_event_ordering(self): ordering = ('-timestamp', ) self.assertTupleEqual(ordering, EventAdmin.ordering) def test_08_event_base_fields(self): ma = ModelAdmin(Event, self.site) base_fields = [ 'sensor', 'timestamp', 'location', 'status', 'camera', 'avg_temp', 'avg_pressure', 'pct_humidity', 'altitude', 'windspeed', 'deleted', 'link', 'ulink', 'dlink' ] self.assertListEqual(base_fields, list(ma.get_form(self.request).base_fields)) def test_09_model_registered(self): ma = ModelAdmin(Event, self.site) self.assertEqual(str(ma), 'complex.ModelAdmin') def test_10_model_not_registered(self): self.assertFalse(self.site.is_registered(EventAdmin)) def test_11_model_fields(self): ma = ModelAdmin(Event, self.site) fields = [ 'sensor', 'timestamp', 'location', 'status', 'camera', 'avg_temp', 'avg_pressure', 'pct_humidity', 'altitude', 'windspeed', 'deleted', 'link', 'ulink', 'dlink' ] self.assertListEqual(fields, list(ma.get_fields(self.request))) def test_12_model_lookup(self): ma = ModelAdmin(Event, self.site) self.assertTrue(ma.lookup_allowed('location', 'smalltown'))
class FlagAdminTests(TestCase): def setUp(self): self.site = AdminSite() self.flag_admin = FlagAdmin(Flag, self.site) def test_informative_widget(self): request = mock.Mock() request.has_perm = lambda self, perm: True form = self.flag_admin.get_form(request)() user_widget = form.fields["users"].widget self.assertIsInstance(user_widget, InformativeManyToManyRawIdWidget) user1 = get_user_model().objects.create(username="******") user2 = get_user_model().objects.create(username="******") self.assertIn("(test1, test2)", user_widget.render("users", [user1.pk, user2.pk])) def test_enable_for_all(self): f1 = Flag.objects.create(name="flag1", everyone=False) request = FakeRequest() enable_for_all(None, request, Flag.objects.all()) f1.refresh_from_db() self.assertTrue(f1.everyone) log_entry = LogEntry.objects.get(user=request.user) self.assertEqual(log_entry.action_flag, CHANGE) self.assertEqual(log_entry.object_repr, "flag1 on") def test_disable_for_all(self): f1 = Flag.objects.create(name="flag1", everyone=True) request = FakeRequest() disable_for_all(None, request, Flag.objects.all()) f1.refresh_from_db() self.assertFalse(f1.everyone) log_entry = LogEntry.objects.get(user=request.user) self.assertEqual(log_entry.action_flag, CHANGE) self.assertEqual(log_entry.object_repr, "flag1 off") def test_delete_individually(self): Flag.objects.create(name="flag1", everyone=True) request = FakeRequest() delete_individually(None, request, Flag.objects.all()) self.assertIsNone(Flag.objects.first()) log_entry = LogEntry.objects.get(user=request.user) self.assertEqual(log_entry.action_flag, DELETION) @skip_if_admin_permissions_not_available def test_flag_no_actions_without_permissions(self): request = FakeRequest() actions = self.flag_admin.get_actions(request) self.assertEqual(actions.keys(), set()) @skip_if_admin_permissions_not_available def test_flag_action_change(self): request = FakeRequest() request.user.user_permissions.add( Permission.objects.get(codename="change_flag")) actions = self.flag_admin.get_actions(request) self.assertEqual(actions.keys(), {"enable_for_all", "disable_for_all"}) @skip_if_admin_permissions_not_available def test_flag_action_delete(self): request = FakeRequest() request.user.user_permissions.add( Permission.objects.get(codename="delete_flag")) actions = self.flag_admin.get_actions(request) self.assertEqual(actions.keys(), {"delete_individually"}) def test_model_can_be_registered_by_default(self): config = get_setting("ENABLE_ADMIN_PAGES") _register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Flag) self.assertTrue(self.site.is_registered(Flag)) @override_settings(WAFFLE_ENABLE_ADMIN_PAGES=False) def test_admin_page_can_be_disabled(self): config = get_setting("ENABLE_ADMIN_PAGES") _register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Flag) self.assertFalse(self.site.is_registered(Flag))
class TestSensorAdmin(TestCase): fixtures = ['user'] def setUp(self): self.maxDiff = None self.data = {'username': '******', 'password': '******'} self.headers = { 'connection': 'keep-alive', 'accept-language': 'en-US,en;q=0.8', 'accept-encoding': 'gzip,deflate,br', 'cache-control': 'max-age=0', 'content-type': 'application/x-www-form-urlencoded', 'content-length': len(dumps(self.data)), 'accept': 'text/html;q=0.9,image/webp,image/apng,*/*;q=0.8' } self.c = Client(enforce_csrf_check=True) self.site = AdminSite() self.request = MockRequest() self.request.user = MockSuperUser() def tearDown(self): self.data = {} self.headers = {} self.c = None self.site = None self.request = None def test_01_sensor_visible(self): url = '/admin/' user = User.objects.get(username=self.data['username']) response = self.c.get(path=url, follow=True) self.assertEqual(200, response.status_code) self.assertTrue(response.csrf_cookie_set) self.assertTrue(self.c.login(**self.data)) url = '/admin/complex/sensor/' response = self.c.get(path=url, headers=self.headers, follow=True) self.assertEqual(200, response.status_code) self.assertEqual('OK', response.reason_phrase) soup = BeautifulSoup(response.content, 'html.parser') self.assertEqual('Select sensor to change | Django site admin', soup.title.string) self.assertIsNone(self.c.logout()) def test_02_sensor_list_display(self): list_display = ('created_by', 'name', 'sku', 'serial_no', 'temp_units', 'pressure_units', 'alt_units', 'ws_units', 'installed', 'climate', 'camera') self.assertTupleEqual(list_display, SensorAdmin.list_display) def test_03_sensor_list_filter(self): list_filter = ('name', 'sku', 'installed') self.assertTupleEqual(list_filter, SensorAdmin.list_filter) def test_04_sensor_search_fields(self): search_fields = ('created_by', 'name', 'sku', 'serial_no', 'installed') self.assertTupleEqual(search_fields, SensorAdmin.search_fields) def test_05_sensor_fields(self): fields = ('created_by', 'name', 'sku', 'serial_no', 'temp_units', 'pressure_units', 'alt_units', 'ws_units', 'climate', 'camera') self.assertTupleEqual(fields, SensorAdmin.fields) def test_06_sensor_base_fields(self): ma = ModelAdmin(Sensor, self.site) base_fields = [ 'created_by', 'name', 'sku', 'serial_no', 'temp_units', 'pressure_units', 'alt_units', 'ws_units', 'climate', 'camera', 'link', 'ulink', 'dlink' ] self.assertListEqual(base_fields, list(ma.get_form(self.request).base_fields)) def test_07_model_registered(self): ma = ModelAdmin(Sensor, self.site) self.assertEqual(str(ma), 'complex.ModelAdmin') def test_08_model_not_registered(self): self.assertFalse(self.site.is_registered(SensorAdmin)) def test_09_model_fields(self): ma = ModelAdmin(Sensor, self.site) fields = [ 'created_by', 'name', 'sku', 'serial_no', 'temp_units', 'pressure_units', 'alt_units', 'ws_units', 'climate', 'camera', 'link', 'ulink', 'dlink' ] self.assertListEqual(fields, list(ma.get_fields(self.request))) def test_10_model_lookup(self): ma = ModelAdmin(Sensor, self.site) self.assertTrue(ma.lookup_allowed('name', 'abc'))
class SwitchAdminTests(TestCase): def setUp(self): self.site = AdminSite() self.switch_admin = SwitchAdmin(Switch, self.site) def test_enable_switches(self): s1 = Switch.objects.create(name="switch1", active=False) request = FakeRequest() enable_switches(None, request, Switch.objects.all()) s1.refresh_from_db() self.assertTrue(s1.active) log_entry = LogEntry.objects.get(user=request.user) self.assertEqual(log_entry.action_flag, CHANGE) self.assertEqual(log_entry.object_repr, "switch1 on") def test_disable_switches(self): s1 = Switch.objects.create(name="switch1", active=True) request = FakeRequest() disable_switches(None, request, Switch.objects.all()) s1.refresh_from_db() self.assertFalse(s1.active) log_entry = LogEntry.objects.get(user=request.user) self.assertEqual(log_entry.action_flag, CHANGE) self.assertEqual(log_entry.object_repr, "switch1 off") @skip_if_admin_permissions_not_available def test_switch_no_actions_without_permissions(self): request = FakeRequest() actions = self.switch_admin.get_actions(request) self.assertEqual(actions.keys(), set()) @skip_if_admin_permissions_not_available def test_switch_action_change(self): request = FakeRequest() request.user.user_permissions.add( Permission.objects.get(codename="change_switch")) actions = self.switch_admin.get_actions(request) self.assertEqual(actions.keys(), {"enable_switches", "disable_switches"}) @skip_if_admin_permissions_not_available def test_switch_action_delete(self): request = FakeRequest() request.user.user_permissions.add( Permission.objects.get(codename="delete_switch")) actions = self.switch_admin.get_actions(request) self.assertEqual(actions.keys(), {"delete_individually"}) def test_model_can_be_registered_by_default(self): config = get_setting("ENABLE_ADMIN_PAGES") _register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Switch) self.assertTrue(self.site.is_registered(Switch)) @override_settings(WAFFLE_ENABLE_ADMIN_PAGES=False) def test_admin_page_can_be_disabled(self): config = get_setting("ENABLE_ADMIN_PAGES") _register_model_to_admin_site(admin_site=self.site, config_setting=config, model=Switch) self.assertFalse(self.site.is_registered(Switch))