def test_encode_auth_token(self):
     user = User(
         name='bombelek',
         password='******'
     )
     db.session.add(user)
     db.session.commit()
     auth_token = user.encode_auth_token(user.id)
     self.assertTrue(isinstance(auth_token, bytes))
 def test_login_correct_password(self):
     user = User(
         name='bombelek',
         password='******'
     )
     db.session.add(user)
     db.session.commit()
     login_result = user.authenticate('bombelek', 'test')
     self.assertEqual(login_result, user)
 def test_login_incorrect_password(self):
     user = User(
         name='bombelek',
         password='******'
     )
     db.session.add(user)
     db.session.commit()
     login_result = user.authenticate('bombelek', 'bad_password')
     self.assertIsNone(login_result)
    def test_decode_auth_token(self):
        user = User(
            name='bombelek',
            password='******'
        )
        db.session.add(user)
        db.session.commit()
        auth_token = user.encode_auth_token(user.id)

        decoded_token_value = User.decode_auth_token(auth_token)
        self.assertTrue(decoded_token_value == user.id)
    def get(self, measurement_id):
        auth_token = request.get_json().get('auth_token')
        try:
            auth_response = User.decode_auth_token(auth_token)
        except ValueError as e:
            response_object = {
                'status': 'fail',
                'message': str(e)
            }
            return make_response(jsonify(response_object)), 401

        if measurement_id is None:
            # return a list of measurements
            measurements = Measurement.query.all()
            response_object = {
                'status': 'success',
                'data': measurements
            }
            return make_response(jsonpickle.encode(response_object)), 200

        else:
            # expose a single measurement
            measurement = Measurement.query.filter_by(id=measurement_id)().first()
            response_object = {
                'status': 'success',
                'data': measurement
            }
            return make_response(jsonify(response_object)), 200
 def post(self):
     # get the post data
     post_data = request.get_json()
     if post_data is None:
         response_object = {'status': 'fail', 'message': 'No data provided'}
         return make_response(jsonify(response_object)), 400
     if 'name' not in post_data or 'password' not in post_data:
         response_object = {
             'status': 'fail',
             'message': 'Incorrect login or password'
         }
         return make_response(jsonify(response_object)), 401
     user = User.authenticate(post_data['name'], post_data['password'])
     if user is None:
         response_object = {
             'status': 'fail',
             'message': 'Incorrect login or password'
         }
         return make_response(jsonify(response_object)), 401
     try:
         auth_token = user.encode_auth_token(user.id)
         if auth_token:
             responseObject = {
                 'status': 'success',
                 'message': 'Successfully logged in.',
                 'auth_token': auth_token.decode()
             }
             return make_response(jsonify(responseObject)), 200
     except Exception as e:
         print(e)
         response_object = {'status': 'fail', 'message': 'Try again'}
         return make_response(jsonify(response_object)), 500
Ejemplo n.º 7
0
    def validate(self):
        if not super(LoginForm, self).validate():
            return False

        self.user = User.authenticate(self.name.data, self.password.data)
        if not self.user:
            self.name.errors.append("Invalid email or password.")
            return False
        return True
Ejemplo n.º 8
0
def register_test_user_and_login(app):
    # Create user
    user = User("Name", "Password")
    db.session.add(user)
    db.session.commit()

    # registered user login
    response = app.client.post('api/v1/auth/login',
                               data=json.dumps(
                                   dict(name='Name', password='******')),
                               content_type='application/json')
    data = json.loads(response.data.decode())
    return data['auth_token']
    def post(self):
        auth_token = request.get_json().get('auth_token')
        try:
            auth_response = User.decode_auth_token(auth_token)
        except ValueError as e:
            response_object = {
                'status': 'fail',
                'message': str(e)
            }
            return make_response(jsonify(response_object)), 401

        # get the post data
        post_data_json = request.get_json().get('data')
        if post_data_json == '' or post_data_json is None:
            response_object = {
                'status': 'fail',
                'message': 'No data provided to POST'
            }
            return make_response(jsonify(response_object)), 401

        post_data = json.loads(post_data_json)

        # Create a dataframe from json data.
        df = pd.DataFrame.from_dict(post_data, orient='index')
        df.timestamp = pd.to_datetime(df.timestamp)

        # Add each row to database.

        for i, row in df.iterrows():
            m = Measurement(row['timestamp'], row['device_name'], row['measurement_type'], row['measurement_value'],
                            row['measurement_unit'])
            db.session.add(m)
        db.session.commit()

        response_object = {
            'status': 'success',
            'data': {
                'added_items': len(df)
            }
        }
        return make_response(jsonify(response_object)), 200
Ejemplo n.º 10
0
    def test_registered_user_login(self):
        """ Test for login of registered-user login """
        with self.client:
            # Create user
            user = User("Name", "Password")
            db.session.add(user)
            db.session.commit()

            # registered user login
            response = self.client.post(
                '/api/v1/auth/login',
                data=json.dumps(dict(
                    name='Name',
                    password='******'
                )),
                content_type='application/json'
            )
            data = json.loads(response.data.decode())
            self.assertEqual(data['status'], 'success')
            self.assertEqual(data['message'], 'Successfully logged in.')
            self.assertTrue(data['auth_token'])
            self.assertEqual(response.content_type, 'application/json')
            self.assertEqual(response.status_code, 200)
Ejemplo n.º 11
0
from datetime import datetime
from growing_commander_server import db
from growing_commander_server.models import User, Measurement

if __name__ == '__main__':
    db.create_all()
    user = User(name='admin', password='******', is_admin=True)
    db.session.add(user)
    db.session.commit()

    measurement_1 = Measurement(datetime.now(), "DHT11", "temperature", 25.7,
                                "C")
    measurement_2 = Measurement(datetime.now(), "DHT11", "humidity", 29, "%")
    db.session.add(measurement_1)
    db.session.add(measurement_2)
    db.session.commit()