def test_create_invalid_credentials(self): ''' Test that we get an error string when we try to update a DataStream with a claimed sensor but a different owner. ''' owner = PortcullisUser.objects.get(email="*****@*****.**") sensor = Sensor.objects.get(uuid="sensor_one_id") ds = DataStream.objects.get(sensor=sensor) self.assertNotEqual(ds.owner, owner) updatedDs = createDs(sensor, owner, {}) self.assertEquals(updatedDs, "Invalid Credentials")
def test_create_new_ds(self): ''' Test that we create a ds and claim it to a given sensor that doesn't have a ds yet ''' dummySensor = self.createDummySensor() self.assertRaises(DataStream.DoesNotExist, DataStream.objects.get, **{'sensor': dummySensor}) owner = PortcullisUser.objects.get(email="*****@*****.**") data = {'name': 'foo_ds'} newDs = createDs(dummySensor, owner, data) self.assertTrue(isinstance(newDs, DataStream)) try: ds = DataStream.objects.get(sensor=dummySensor) except DataStream.DoesNotExist: self.fail('No DataStream with Sensor \'%s\''%dummySensor) self.assertEqual(newDs, ds)
def claimSensor(data, owner): try: try: uuid = data['uuid'] sensor = Sensor.objects.get(uuid=uuid) except KeyError: transaction.rollback() return "A sensor uuid is required" except Sensor.DoesNotExist: sensor = None #Cases for if a user has no authority to create/claim sensors if (sensor is None and owner is None) or \ (sensor is not None and not sensor.isClaimed() and owner is None): transaction.rollback() return "Invalid Credentials" sensor = Sensor() if sensor is None else sensor #If sensor isnt claimed and we have credentials if not sensor.isClaimed() and owner is not None: sensor = updateObject(sensor, data) if not isinstance(sensor, Sensor): transaction.rollback() return sensor streamData = data.get('stream_data', {}) ds = createDs(sensor, owner, streamData) if not isinstance(ds, DataStream): transaction.rollback() return ds #We've successfully set up everything for the sensor so return it transaction.commit() return sensor except Exception as e: transaction.rollback() return str(e)
def test_create_update_ds(self): ''' Test that we update a ds given it's sensor that is has claimed and new data ''' owner = PortcullisUser.objects.get(email="*****@*****.**") sensor = Sensor.objects.get(uuid="sensor_one_id") ds = DataStream.objects.get(sensor=sensor) newData = { 'color': '#FFFFFF' ,'min_value': 1.1 ,'max_value': 1.1 ,'reduction_type': 'median' ,'is_public': False ,'scaling_function': ScalingFunction.objects.get(name="Kbps") ,'name': "new foo name" ,'description': 'blarg' ,'units': 'some units' } #First test that the new values don't already exist in the ds valueExists = False for field in ds._meta._fields(): if field.name in newData and newData[field.name] == getattr(ds, field.name): valueExists = True self.assertFalse(valueExists) updatedDs = createDs(sensor, owner, newData) self.assertEquals(updatedDs, DataStream.objects.get(sensor=sensor)) #Test values again on the updated ds to make sure they got updated valuesUpdated = True for field in updatedDs._meta._fields(): if field.name in newData and newData[field.name] != getattr(updatedDs, field.name): valuesUpdated = False self.assertTrue(valuesUpdated)