Exemplo n.º 1
0
    def test_get_vineyards(self):
        v1 = Vineyard(name='foo', user_id=self.admin_user.id)
        v2 = Vineyard(name='bar', user_id=self.admin_user.id)
        db.session.add(v1)
        db.session.add(v2)
        db.session.commit()

        response = self.client.get('/api/v1/vineyards/',
                                   headers=self.get_admin_headers())
        self.assertEqual(response.status_code, 200)

        json_response = json.loads(response.get_data(as_text=True))
        self.assertEqual(json_response.get('count'), 2)
        self.assertEqual(len(json_response.get('vineyards')), 2)
Exemplo n.º 2
0
    def test_admin_can_get_others_vineyard(self):
        v = Vineyard(name='foo', user_id=self.writer_user.id)
        db.session.add(v)
        db.session.commit()

        response = self.client.get('/api/v1/vineyards/%d' % v.id,
                                   headers=self.get_admin_headers())
        self.assertEqual(response.status_code, 200)
Exemplo n.º 3
0
    def test_get_vineyard(self):
        v = Vineyard(name='foo', user_id=self.writer_user.id)
        db.session.add(v)
        db.session.commit()

        response = self.client.get('/api/v1/vineyards/%d' % v.id,
                                   headers=self.get_writer_headers())
        self.assertEqual(response.status_code, 200)

        json_response = json.loads(response.get_data(as_text=True))
        self.assertEqual(json_response.get('id'), v.id)
Exemplo n.º 4
0
 def test_to_json(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     v = Vineyard(name='foo', user_id=u.id)
     db.session.add(v)
     db.session.commit()
     with self.app.test_request_context('/'):
         json_vineyard = v.to_json()
     expected_keys = [
         'id', 'name', 'url', 'user_url', 'sensors', 'sensors_url',
         'created_at'
     ]
     self.assertEqual(sorted(json_vineyard.keys()), sorted(expected_keys))
     self.assertEqual('/api/v1/vineyards/' + str(v.id),
                      json_vineyard['url'])
     self.assertEqual('/api/v1/users/' + str(u.id),
                      json_vineyard['user_url'])
     self.assertEqual('/api/v1/vineyards/' + str(v.id) + '/sensors/',
                      json_vineyard['sensors_url'])
Exemplo n.º 5
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()
        Role.insert_roles()
        self.client = self.app.test_client()

        # add regular user
        r = Role.query.filter_by(name='Writer').first()
        u = User(email='*****@*****.**', password='******', confirmed=True,
                 role=r)
        db.session.add(u)
        db.session.commit()
        self.writer_user = u

        # add a vineyard for the regular user
        v = Vineyard(name='foo', user_id=self.writer_user.id)
        db.session.add(v)
        db.session.commit()
        self.vineyard = v

        # add a sensor for the regular user
        s = Sensor(description='bar', latitude=0, longitude=0, gateway='asd',
                   power_perc=0, vineyard_id=self.vineyard.id, user_id=self.writer_user.id)
        db.session.add(s)
        db.session.commit()
        self.sensor = s

        # add a magnitude for the regular user
        m = Magnitude(layer='Surface', type='Temperature', sensor_id=self.sensor.id,
                      user_id=self.writer_user.id)
        db.session.add(m)
        db.session.commit()
        self.magnitude = m

        # add a read only user
        r = Role.query.filter_by(name='Reader').first()
        u = User(email='*****@*****.**', password='******', confirmed=True,
                 role=r)
        db.session.add(u)
        db.session.commit()
        self.reader_user = u

        # add an admin user
        r = Role.query.filter_by(name='Administrator').first()
        u = User(email='*****@*****.**', password='******', confirmed=True,
                 role=r)
        db.session.add(u)
        db.session.commit()
        self.admin_user = u

        self.tokens = {}
Exemplo n.º 6
0
 def test_to_json(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     v = Vineyard(name='foo', user_id=u.id)
     db.session.add(v)
     db.session.commit()
     s = Sensor(description='foo', latitude=2.4, longitude=1.2, gateway='bar', power_perc=100,
                vineyard_id=v.id, user_id=u.id)
     db.session.add(s)
     db.session.commit()
     with self.app.test_request_context('/'):
         json_sensor = s.to_json()
     expected_keys = ['id', 'description', 'latitude', 'longitude', 'gateway', 'power_perc',
                      'url', 'user_url', 'vineyard_url', 'magnitudes', 'magnitudes_url', 'created_at']
     self.assertEqual(sorted(json_sensor.keys()), sorted(expected_keys))
     self.assertEqual('/api/v1/sensors/' + str(s.id), json_sensor['url'])
     self.assertEqual('/api/v1/users/' + str(u.id), json_sensor['user_url'])
     self.assertEqual('/api/v1/vineyards/' + str(v.id), json_sensor['vineyard_url'])
     self.assertEqual('/api/v1/sensors/' + str(v.id) + '/magnitudes/',
                      json_sensor['magnitudes_url'])
Exemplo n.º 7
0
    def test_vineyard_sensors(self):
        v = Vineyard(name='foo', user_id=self.writer_user.id)
        db.session.add(v)
        db.session.commit()
        s = Sensor(description='bar',
                   latitude=0,
                   longitude=0,
                   gateway='asd',
                   power_perc=0,
                   vineyard_id=v.id,
                   user_id=self.writer_user.id)
        db.session.add(s)
        db.session.commit()

        response = self.client.get('/api/v1/vineyards/%d/sensors/' % v.id,
                                   headers=self.get_writer_headers())

        self.assertEqual(response.status_code, 200)
        json_response = json.loads(response.get_data(as_text=True))
        self.assertEqual(json_response['count'], 1)
        self.assertEqual(json_response['sensors'][0]['id'], s.id)
Exemplo n.º 8
0
    def test_cant_delete_vineyard_from_other_users(self):
        r = Role.query.filter_by(name='Writer').first()
        u = User(email='*****@*****.**',
                 password='******',
                 confirmed=True,
                 role=r)
        db.session.add(u)
        db.session.commit()

        v = Vineyard(name='foo', user_id=u.id)
        db.session.add(v)
        db.session.commit()

        response = self.client.delete('/api/v1/vineyards/%d' % v.id,
                                      headers=self.get_writer_headers())

        self.assertEqual(response.status_code, 403)

        response = self.client.get('/api/v1/vineyards/%d' % v.id,
                                   headers=self.get_api_headers(
                                       '*****@*****.**', 'cat'))
        self.assertEqual(response.status_code, 200)
Exemplo n.º 9
0
 def test_to_json(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     v = Vineyard(name='foo', user_id=u.id)
     db.session.add(v)
     db.session.commit()
     s = Sensor(description='foo', latitude=2.4, longitude=1.2, gateway='bar', power_perc=100,
                vineyard_id=v.id, user_id=u.id)
     db.session.add(s)
     db.session.commit()
     m = Magnitude(layer='Surface', type='Temperature', sensor_id=s.id, user_id=u.id)
     db.session.add(m)
     db.session.commit()
     with self.app.test_request_context('/'):
         json_magnitude = m.to_json()
     expected_keys = ['id', 'layer', 'type', 'url', 'user_url', 'sensor_id', 'sensor_url', 'metrics_url', 'created_at']
     self.assertEqual(sorted(json_magnitude.keys()), sorted(expected_keys))
     self.assertEqual('/api/v1/magnitudes/' + str(s.id), json_magnitude['url'])
     self.assertEqual('/api/v1/users/' + str(u.id), json_magnitude['user_url'])
     self.assertEqual('/api/v1/magnitudes/' + str(v.id) + '/metrics/',
                      json_magnitude['metrics_url'])