def setUp(self): self.org_admin_group = create_group( 'org_admin', self.ORGANIZATION_ADMIN_PERMISSIONS) self.group_viewer = create_group('viewer', self.VIEWER_PERMISSIONS) self.group_reporter = create_group('reporter', []) self.group_contributor = create_group('contributor', []) self.org1 = Organization.objects.create(name="UW") self.org2 = Organization.objects.create(name="CVO") self.org1_member_client = APIClient() self.org2_member_client = APIClient() self.org1_admin_client = APIClient() self.org1_member = sample_user("*****@*****.**", 'secret', self.org1) self.org2_member = sample_user("*****@*****.**", 'secret', self.org2) self.org1_admin = sample_user("*****@*****.**", 'secret', self.org1, is_org_admin=True) # add obj model permissions self.org1_member.groups.add(self.group_viewer) self.org2_member.groups.add(self.group_viewer) self.org1_admin.groups.add(self.org_admin_group) self.org1_admin.groups.add(self.group_viewer) # authenticate self.org1_member_client.force_authenticate(self.org1_member) self.org2_member_client.force_authenticate(self.org2_member) self.org1_admin_client.force_authenticate(self.org1_admin)
def setUp(self): self.client = APIClient() self.admin = sample_user(email="*****@*****.**", password="******") self.admin.is_staff = True self.admin.save() self.other = sample_user(email="*****@*****.**", password="******") self.client.force_authenticate(self.admin) self.contact_admin = Contact.objects.create( user=self.admin, sms_value='1' ) self.contact_other = Contact.objects.create( user=self.other, email_value=self.other.email ) self.notification = Notification.objects.create( user=self.admin, notification_type=Notification.NotificationType.SMS, contact=self.contact_admin ) self.other_notification = Notification.objects.create( user=self.other, notification_type=Notification.NotificationType.SMS, contact=self.contact_other )
def test_create_token_success(self): '''test token success''' sample_user(email='*****@*****.**', password="******", organization=self.organization, firstname='your', lastname='mom') payload = {'email': '*****@*****.**', 'password': "******"} res = self.client.post(CREATE_TOKEN_URL, payload) self.assertEqual(res.status_code, status.HTTP_200_OK)
def test_create_token_invalid_credentials(self): '''test that token is not created if invalid creds are given''' sample_user(email="*****@*****.**", password='******', organization=self.organization) payload = { 'email': '*****@*****.**', 'password': "******", 'organization': self.organization.id, } res = self.client.post(CREATE_TOKEN_URL, payload) self.assertNotIn('token', res.data) self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.user = sample_user() self.client = APIClient() # unauthenticate user self.client.force_authenticate(user=None) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.chan = Channel.objects.create(code='EHZ', name="EHZ", loc="--", lat=45.0, lon=-122.0, station_code='RCM', station_name='Camp Muir', elev=100.0, network=self.net, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.organization = Organization.objects.create(name='PNSN') self.grp = Group.objects.create(name='Test group', organization=self.organization, user=self.user) self.grp.channels.add(self.chan)
def setUp(self): self.client = APIClient() self.user = sample_user(email="*****@*****.**", password="******") self.user.is_staff = True self.user.save() self.client.force_authenticate(self.user) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.chan = Channel.objects.create(code='EHZ', name="EHZ", loc="--", network=self.net, station_code='RCM', station_name='Camp Muir', lat=45, lon=-122, elev=100.0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.organization = Organization.objects.create(name='PNSN') self.grp = Group.objects.create(name='Test group', user=self.user, organization=self.organization)
def test_registration_validation(self): '''invited user should not be able to register with with missing passwd, first or lastname''' url = reverse('invite:user-register') invited_user = sample_user('*****@*****.**') invite_token = InviteToken.objects.create(user=invited_user) token = base64.urlsafe_b64encode(str( invite_token.id).encode()).decode() payload = { 'token': token, 'password': '******', 'firstname': 'Bat' } res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST) payload = { 'token': token, 'password': '******', 'lastname': 'Man' } res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST) payload = {'token': token, 'firstname': 'Bat', 'lastname': 'Man'} res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.organization = Organization.objects.create(name="PNSN") self.viewer = create_group("viewer", []) self.reporter = create_group("reporter", []) self.contributor = create_group("contributor", []) self.org_admin = create_group("org_admin", []) self.user = sample_user('*****@*****.**')
def test_set_permission_groups(self): user = sample_user("*****@*****.**") user.set_permission_groups([self.reporter]) self.assertTrue(len(user.groups.all()) == 2) user.set_permission_groups([self.viewer]) self.assertTrue(len(user.groups.all()) == 1) user.set_permission_groups([self.contributor, self.viewer]) self.assertTrue(len(user.groups.all()) == 3)
def setUp(self): self.client = APIClient() self.me = sample_user('*****@*****.**') self.other = sample_user('*****@*****.**') self.admin = sample_user('*****@*****.**') self.admin.is_staff = True self.admin.save() self.contact = Contact.objects.create( user=self.me, sms_value='1' ) self.notification = Notification.objects.create( user=self.me, notification_type=Notification.NotificationType.SMS, contact=self.contact )
def test_invite_success(self): url = reverse('invite:user-invite') invited_user = sample_user('*****@*****.**', 'secret', self.org, is_active=False) payload = {'user': invited_user.id} res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_201_CREATED)
def setUp(self): '''create sample authenticated user''' # import pdb; pdb.set_trace() self.me_viewer = sample_user('*****@*****.**') self.me_reporter = sample_user('*****@*****.**') self.not_me = sample_user('*****@*****.**') self.me_reporter_client = APIClient() self.me_viewer_client = APIClient() self.me_reporter_group = create_group('reporter', REPORTER_PERMISSIONS) self.me_viewer_group = create_group('viewer', VIEWER_PERMISSIONS) self.me_reporter.groups.add(self.me_reporter_group) self.me_viewer.groups.add(self.me_viewer_group) self.me_reporter_client.force_authenticate(user=self.me_reporter) self.me_viewer_client.force_authenticate(user=self.me_viewer) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.me_reporter) self.chan = Channel.objects.create(code='EHZ', name="EHZ", loc="--", network=self.net, station_code='RCM', station_name='Camp Muir', lat=45, lon=-122, elev=100.0, user=self.me_reporter, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) # create two orgs min and not mine self.my_org = Organization.objects.create(name='Mine') self.not_my_org = Organization.objects.create(name='Not Mine') # add users to orgs self.me_reporter.organization = self.my_org self.me_viewer.organization = self.my_org
def setUp(self): self.client = APIClient() self.group_viewer = create_group('viewer', []) self.group_reporter = create_group('reporter', []) self.group_contributor = create_group('contributor', []) self.group_org_admin = create_group("org_admin", []) self.org1 = Organization.objects.create(name="UW") self.org2 = Organization.objects.create(name="CVO") self.staff = sample_user( email="*****@*****.**", password="******", organization=self.org1 ) self.staff.is_staff = True self.client.force_authenticate(self.staff) self.org1user = sample_user("*****@*****.**", 'secret', self.org1) self.org2user = sample_user("*****@*****.**", 'secret', self.org2)
def test_invite_active_user_fail(self): '''should throw error when inviting active user''' active_user = sample_user('*****@*****.**', 'secret', self.org, is_active=True) url = reverse('invite:user-invite') payload = {'user': active_user.id} res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.organization = Organization.objects.create(name='PNSN') self.user = sample_user( email='*****@*****.**', password="******", organization=self.organization, firstname='your', lastname='mom', ) self.client = APIClient() self.client.force_authenticate(user=self.user)
def setUp(self): self.user = sample_user() self.client = APIClient() # unauthenticate user self.client.force_authenticate(user=None) self.contact = Contact.objects.create( user=self.user, sms_value='1' ) self.notification = Notification.objects.create( user=self.user, notification_type=Notification.NotificationType.SMS, contact=self.contact )
def test_expired_token(self): '''bad token should fail''' url = reverse('invite:user-register') invited_user = sample_user('*****@*****.**') invite_token = InviteToken.objects.create(user=invited_user) expire_after = settings.INVITE_TOKEN_EXPIRY_TIME invite_token.created_at = \ invite_token.created_at - timedelta(hours=expire_after + 1) invite_token.save() token = base64.urlsafe_b64encode(str( invite_token.id).encode()).decode() payload = {'token': token, 'password': '******'} res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.user = sample_user() self.client = APIClient() # unauthenticate all requests self.client.force_authenticate(user=None) timezone.now() metric = Metric.objects.create(name='Metric test', code='123', unit='meter', default_minval=1, default_maxval=10.0, user=self.user) net = Network.objects.create(code="UW", name="University of Washington", user=self.user) chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.archive = ArchiveDay.objects.create( channel=chan, metric=metric, min=0, max=0, mean=0, median=0, stdev=0, num_samps=1, p05=0, p10=0, p90=0, p95=0, starttime=datetime(2019, 5, 5, 8, 8, 7, 127325, tzinfo=pytz.UTC), endtime=datetime(2019, 5, 5, 8, 8, 7, 127325, tzinfo=pytz.UTC))
def setUp(self): self.client = APIClient() self.user = sample_user() self.user.is_staff = True self.client.force_authenticate(self.user) timezone.now() self.metric = Metric.objects.create( name='Sample metric', unit='furlong', code="someotherfuknthing", default_minval=1, default_maxval=10.0, user=self.user, reference_url='pnsn.org' ) self.net = Network.objects.create( code="UW", name="University of Washington", user=self.user ) self.chan = Channel.objects.create( code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC) ) self.measurement = Measurement.objects.create( metric=self.metric, channel=self.chan, value=3.0, starttime=datetime(2019, 5, 5, 8, 8, 7, 127325, tzinfo=pytz.UTC), endtime=datetime(2019, 5, 5, 9, 8, 7, 127325, tzinfo=pytz.UTC), user=self.user )
def test_register_user_success(self): '''invited user should be able to register with password and valid token''' url = reverse('invite:user-register') invited_user = sample_user('*****@*****.**') invite_token = InviteToken.objects.create(user=invited_user) token = base64.urlsafe_b64encode(str( invite_token.id).encode()).decode() payload = { 'token': token, 'password': '******', 'firstname': 'Bat', 'lastname': 'Man' } res = self.client.post(url, payload, format='json') self.assertEqual(res.status_code, status.HTTP_201_CREATED) invited_user.refresh_from_db() self.assertEqual(invited_user.firstname, 'Bat') self.assertEqual(invited_user.lastname, 'Man') self.assertTrue(invited_user.is_active)
def setUp(self): timezone.now() self.user = sample_user() self.metric = Metric.objects.create(name='Metric test', code='123', unit='meter', default_minval=1, default_maxval=10.0, user=self.user) self.metric2 = Metric.objects.create(name='Metric test 2', code='124', unit='meter', default_minval=2, default_maxval=12.0, user=self.user) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC))
def setUp(self): self.client = APIClient() self.user = sample_user() self.user.is_staff = True self.client.force_authenticate(self.user) timezone.now() self.organization = Organization.objects.create( name='PNSN' ) self.net = Network.objects.create( code="UW", name="University of Washington", user=self.user) self.chan1 = self.getTestChannel('CH1') self.chan2 = self.getTestChannel('CH2') # self.chan3 = self.getTestChannel('CH3') self.grp = Group.objects.create( name='Test group', user=self.user, organization=self.organization, ) self.grp.channels.set([self.chan1.id, self.chan2.id]) self.metric = Metric.objects.create( name='Sample metric', unit='furlong', code="someotherthing", default_minval=1, default_maxval=10.0, user=self.user, reference_url='pnsn.org' ) self.monitor = Monitor.objects.create( channel_group=self.grp, metric=self.metric, interval_type=Monitor.IntervalType.DAY, interval_count=1, num_channels=5, stat=Monitor.Stat.SUM, user=self.user ) self.trigger = Trigger.objects.create( monitor=self.monitor, minval=2, maxval=5, level=Trigger.Level.ONE, user=self.user ) self.alert = Alert.objects.create( trigger=self.trigger, timestamp=datetime(1970, 1, 1, tzinfo=pytz.UTC), message='Alarm on channel group something something!', in_alarm=True, user=self.user ) self.contact = Contact.objects.create( user=self.user, email_value=self.user.email ) self.notification = Notification.objects.create( notification_type=Notification.NotificationType.EMAIL, user=self.user, contact=self.contact )
def setUp(self): '''create sample authenticated user''' pass self.viewer = sample_user('*****@*****.**') self.reporter = sample_user('*****@*****.**') self.not_me = sample_user('*****@*****.**') self.reporter_client = APIClient() self.viewer_client = APIClient() self.reporter_group = create_group('reporter', REPORTER_PERMISSIONS) self.viewer_group = create_group('viewer', VIEWER_PERMISSIONS) self.reporter.groups.add(self.reporter_group) self.viewer.groups.add(self.viewer_group) self.reporter_client.force_authenticate(user=self.reporter) self.viewer_client.force_authenticate(user=self.viewer) self.metric = Metric.objects.create(name='Metric test', code="code12", unit='meter', default_minval=1, default_maxval=10.0, user=self.reporter) self.metric_other = Metric.objects.create(name='Metric test', code="code123", unit='meter', default_minval=1, default_maxval=10.0, user=self.not_me) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.reporter) self.chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.reporter, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.my_org = Organization.objects.create(name='mu org') self.not_my_org = Organization.objects.create(name='not my org') # we're not tesing chan group so mark share all self.grp = Group.objects.create(name='Test group', user=self.reporter, organization=self.my_org) self.grp.channels.add(self.chan) self.reporter.organization = self.my_org self.viewer.organization = self.my_org self.my_org_dashboard_share_org = Dashboard.objects.create( name='Test dashboard', share_all=False, share_org=True, user=self.reporter, organization=self.my_org) self.my_org_dashboard_share_none = Dashboard.objects.create( name='Test dashboard', share_all=False, share_org=False, user=self.reporter, organization=self.my_org) self.not_my_org_dashboard_share_all = Dashboard.objects.create( name='Test dashboard', share_all=True, share_org=True, user=self.not_me, organization=self.not_my_org) self.not_my_org_dashboard_share_org = Dashboard.objects.create( name='Test dashboard', share_all=False, share_org=True, user=self.not_me, organization=self.not_my_org) self.not_my_org_dashboard_share_none = Dashboard.objects.create( name='Test dashboard', share_all=False, share_org=False, user=self.not_me, organization=self.not_my_org) self.widtype = WidgetType.objects.create(name='Test widget type', type='Some type', user=self.reporter) self.stattype = StatType.objects.create(name="Average", type="ave", user=self.reporter) self.widget = Widget.objects.create( name='Test widget', dashboard=self.my_org_dashboard_share_org, widgettype=self.widtype, stattype=self.stattype, columns=6, rows=3, x_position=1, y_position=1, user=self.reporter, channel_group=self.grp, )
def setUp(self): self.client = APIClient() self.staff = sample_user('*****@*****.**') self.staff.is_staff = True self.client.force_authenticate(self.staff) self.org = Organization.objects.create(name="UW")
def setUp(self): self.user = sample_user() self.client = APIClient() self.user.is_staff = True # unauthenticate all requests self.client.force_authenticate(user=self.user) timezone.now() self.organization = Organization.objects.create(name='PNSN') self.metric = Metric.objects.create(name='Metric test', code='123', unit='meter', default_minval=1, default_maxval=10.0, user=self.user) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.grp = Group.objects.create(name='Test group', organization=self.organization, user=self.user) self.chan1 = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime( 1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.chan2 = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCS', station_name='Camp Schurman', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime( 1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.grp = Group.objects.create(name='Test group', organization=self.organization, user=self.user) self.grp.channels.add(self.chan1) self.grp.channels.add(self.chan2) self.archive1 = ArchiveDay.objects.create( channel=self.chan1, metric=self.metric, min=-2, max=1, mean=0, median=0, stdev=0, num_samps=1, p05=0, p10=0, p90=0, p95=0, starttime=datetime(2019, 5, 5, 0, tzinfo=pytz.UTC), endtime=datetime(2019, 5, 6, 0, tzinfo=pytz.UTC)) self.archive2 = ArchiveDay.objects.create( channel=self.chan2, metric=self.metric, min=0, max=3, mean=0, median=0, stdev=0, num_samps=1, p05=0, p10=0, p90=0, p95=0, starttime=datetime(2019, 5, 5, tzinfo=pytz.UTC), endtime=datetime(2019, 5, 6, tzinfo=pytz.UTC))
def setUp(self): self.user = sample_user('*****@*****.**')
def setUp(self): self.client = APIClient() self.user = sample_user() self.user.is_staff = True self.client.force_authenticate(self.user) timezone.now() self.metric = Metric.objects.create(name='Sample metric', code="asdfjcode", unit='furlong', default_minval=1, default_maxval=10.0, user=self.user) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.organization = Organization.objects.create(name='PNSN') self.grp = Group.objects.create(name='Sample group', user=self.user, organization=self.organization) self.dashboard = Dashboard.objects.create( name='Test dashboard', user=self.user, organization=self.organization, home=True) self.widtype = WidgetType.objects.create(name='Test widget type', type='Some type', user=self.user) self.stattype = StatType.objects.create(name="Maxeo", type="max", user=self.user) self.widget = Widget.objects.create( name='Test widget', dashboard=self.dashboard, widgettype=self.widtype, stattype=self.stattype, columns=6, rows=3, x_position=1, y_position=1, user=self.user, channel_group=self.grp, ) self.threshold = Threshold.objects.create(widget=self.widget, metric=self.metric, minval=9.0, maxval=10.0, user=self.user)
def setUp(self): self.user = sample_user() self.client = APIClient() # unauthenticate all requests self.client.force_authenticate(user=None) timezone.now() self.metric = Metric.objects.create(name='Metric test', code="code123", unit='meter', default_minval=1, default_maxval=10.0, user=self.user) self.net = Network.objects.create(code="UW", name="University of Washington", user=self.user) self.chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.user, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.organization = Organization.objects.create(name='PNSN') self.grp = Group.objects.create(name='Test group', user=self.user, organization=self.organization) self.grp.channels.add(self.chan) self.dashboard = Dashboard.objects.create( name='Test dashboard', user=self.user, organization=self.organization) self.widtype = WidgetType.objects.create(name='Test widget type', type='Some type', user=self.user, use_aggregate=True) self.stattype = StatType.objects.create(name="Average", type="ave", user=self.user) self.widget = Widget.objects.create( name='Test widget', dashboard=self.dashboard, widgettype=self.widtype, stattype=self.stattype, columns=6, rows=3, x_position=1, y_position=1, user=self.user, channel_group=self.grp, ) self.widget.metrics.add(self.metric)
def setUp(self): '''create sample authenticated user''' self.reporter = sample_user() self.reporter2 = sample_user('*****@*****.**') self.viewer = sample_user('*****@*****.**') self.other = sample_user('*****@*****.**') self.reporter_client = APIClient() self.reporter2_client = APIClient() self.viewer_client = APIClient() self.reporter_group = create_group('reporter', REPORTER_PERMISSIONS) self.viewer_group = create_group('viewer', VIEWER_PERMISSIONS) self.reporter.groups.add(self.reporter_group) self.reporter2.groups.add(self.reporter_group) self.viewer.groups.add(self.viewer_group) self.reporter_client.force_authenticate(user=self.reporter) self.reporter2_client.force_authenticate(user=self.reporter) self.viewer_client.force_authenticate(user=self.viewer) self.metric = Metric.objects.create(name='Sample metric', unit='furlong', code="someotherfuknthing", default_minval=1, default_maxval=10.0, user=self.reporter, reference_url='pnsn.org') self.metric_other = Metric.objects.create( name='Sample metric1', unit='furlong', code="someotherfuknthingajig", default_minval=1, default_maxval=10.0, user=self.other, reference_url='pnsn.org') self.net = Network.objects.create(code="UW", name="University of Washington", user=self.reporter) self.chan = Channel.objects.create(code='EHZ', name="EHZ", station_code='RCM', station_name='Camp Muir', loc="--", network=self.net, lat=45, lon=-122, elev=0, user=self.reporter, starttime=datetime(1970, 1, 1, tzinfo=pytz.UTC), endtime=datetime(2599, 12, 31, tzinfo=pytz.UTC)) self.measurement = Measurement.objects.create( metric=self.metric, channel=self.chan, value=3.0, starttime=datetime(2019, 5, 5, 8, 8, 7, 127325, tzinfo=pytz.UTC), endtime=datetime(2019, 5, 5, 9, 8, 7, 127325, tzinfo=pytz.UTC), user=self.reporter) self.measurement_other = Measurement.objects.create( metric=self.metric, channel=self.chan, value=4.0, starttime=datetime(2019, 6, 5, 8, 8, 7, 127325, tzinfo=pytz.UTC), endtime=datetime(2019, 6, 5, 9, 8, 7, 127325, tzinfo=pytz.UTC), user=self.other) self.organization = Organization.objects.create(name='PNSN') self.grp = Group.objects.create(name='Test group', user=self.reporter, organization=self.organization) self.grp.channels.add(self.chan) # reporter 1 self.monitor = Monitor.objects.create(metric=self.metric, channel_group=self.grp, interval_type='hour', interval_count=1, num_channels=1, stat="sum", name='test', user=self.reporter) # and one for reporter 2 self.monitor2 = Monitor.objects.create(metric=self.metric, channel_group=self.grp, interval_type='hour', interval_count=1, num_channels=1, stat="sum", name='test', user=self.reporter2)