Esempio n. 1
0
    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")
Esempio n. 2
0
    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)
Esempio n. 3
0
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)
Esempio n. 4
0
    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)