示例#1
0
    def test_hash_new_password(self):

        pw_hash = UserService.hash_new_password('Correctpassword')
        print(f"{pw_hash}")
        assert UserService.is_correct_password(pw_hash, "Correctpassword")
        assert not UserService.is_correct_password(pw_hash, "Wrongpassword")
        assert not UserService.is_correct_password(pw_hash, "")
示例#2
0
    def login_user(user_name, password):
        user_service = UserService(get_conn())
        user = user_service.query({'email': user_name, 'pwd': password})
        if len(user) > 0 and ("email" not in session
                              or session['email'] == ''):
            session["email"] = user_name

        return jsonify(user), 200
示例#3
0
    def init(init_code=None):

        ini_service = InitialService()
        has_record = ini_service.has_records()

        if not has_record:
            return jsonify(["", "", 0]), 200
        elif init_code is not None:
            user_service = UserService(get_conn())
            user = user_service.query({"init_code": init_code})
            if len(user) > 0:
                user = user[0]
                return jsonify(
                    [user["name"], user["email"], user["user_type"]]), 200

        return jsonify([]), 200
示例#4
0
    def test_createUser(self):
        ini_service = InitialService()
        conn = ini_service.get_connection()
        cursor = conn.cursor()

        user_service = UserService(conn)
        user_service.insert("*****@*****.**", "qi chang", "**(SDFDSF",
                            None, 0)

        cursor.execute("SELECT * from users")
        records = cursor.fetchall()
        assert len(records) == 1

        # email is a unique key, should just update record.
        result = user_service.insert("*****@*****.**", "qi chang",
                                     "**(SDFDSF", None, 0)
        assert result is False

        cursor.execute("SELECT * from users")
        records = cursor.fetchall()
        assert len(records) == 1
示例#5
0
    def test_ini(self, client):
        ini = client.get(
            url_for("init", init_code='invalid_ini_code_sdfsad6324234df'))
        # No existing record, so setup the system.
        assert ini.json == ["", "", 0]
        assert ini.status == '200 OK'

        ini_service = InitialService()
        conn = ini_service.get_connection()
        user_service = UserService(conn)
        user_service.insert("*****@*****.**", "qi chang",
                            "ASDF#$#!!@$!123", "sdfsad6324234df", 0)
        user_service.insert("*****@*****.**", "hua fu", "ASDF#$#!!@$!123",
                            "12345678", 0)

        ini = client.get(
            url_for("init", init_code='invalid_ini_code_sdfsad6324234df'))
        assert ini.json == []
        assert ini.status == '200 OK'

        ini = client.get(url_for("init", init_code='sdfsad6324234df'))

        assert ini.json[0] == "qi chang"
        assert ini.json[1] == "*****@*****.**"
        assert ini.status == '200 OK'
示例#6
0
    def index():
        username = ''
        user_service = UserService(get_conn())
        if 'email' in session:
            username = session['email']
        if len(request.args) > 0:
            try:
                user = request.args.get('user', default='')
                ts = request.args.get('ts', default=0)
                if len(user_service.query({
                        'email': user,
                        'init_code': ts
                })) > 0:
                    now = datetime.datetime.now().timestamp()
                    ts = float(ts)
                    hours = (now - ts) / (60 * 60)
                    if hours > REGISTER_MAX_HOURS:
                        return redirect("/", code=302)
                elif len(user_service.query({})) == 0:
                    # The first time register.
                    # /[email protected]
                    return render_template("index.html",
                                           data={
                                               'username': username,
                                               'ini_admin': "false"
                                           })
                else:
                    return redirect("/", code=302)
            except Exception:
                return redirect("/", code=302)
        elif len(user_service.query({})) == 0:
            return redirect("/ini_admin", code=302)

        return render_template("index.html",
                               data={
                                   'username': username,
                                   'ini_admin': "false"
                               })
示例#7
0
    def delete_user(user_name):
        if "email" in session and session['email'] != '':
            user_service = UserService(get_conn())
            user = user_service.query({'email': session['email']})
            if len(user) > 0:
                user_service.delete(user_name)
                return jsonify({"user": user_name}), 200

        return jsonify({}), 404

        user = user_service.query({'email': user_name})
        if len(user) > 0 and ("email" not in session
                              or session['email'] == ''):
            session["email"] = user_name

        return jsonify(user), 200
示例#8
0
    def test_deleteUser(self):

        ini_service = InitialService()
        conn = ini_service.get_connection()
        user_service = UserService(conn)
        # In case the record doesn't exist.
        try:
            user_service.insert("*****@*****.**", "qi chang",
                                "**(SDFDSF", None, 0)
        except Error:
            pass
        result = user_service.delete("*****@*****.**")
        assert result is True

        result = user_service.delete("*****@*****.**")
        assert result is False
示例#9
0
    def test_queryUser(self):
        ini_service = InitialService()
        conn = ini_service.get_connection()
        user_service = UserService(conn)

        # In case the record doesn't exist.
        try:
            user_service.insert("*****@*****.**", "qi chang",
                                "**(SDFDSF", None, 0)
        except Error:
            pass
        result = user_service.query({"email": "*****@*****.**"})

        assert result[0]["email"] == "*****@*****.**"
        assert result[0]["name"] == "qi chang"
        assert "pwd" not in result[0]
        # assert result[0]["pwd"] == '**(SDFDSF'
        assert result[0]["init_code"] is None
        assert result[0]["user_type"] == 0

        result = user_service.query({"email": "*****@*****.**"})
        assert len(result) == 0
示例#10
0
 def index_newadmin():
     user_service = UserService(get_conn())
     if len(user_service.query({})) == 0:
         return render_template("index.html", data={'ini_admin': "true"})
     else:
         return redirect("/", code=302)
示例#11
0
 def registry_user():
     user_service = UserService(get_conn())
     if request.method == 'PUT':
         email = request.json['email']
         pwd = request.json['password']
         # Update password based on the email
         status = user_service.update(email, {"pwd": pwd, "init_code": ""})
         if not status and len(user_service.query({})) == 0:
             ts = datetime.datetime.now().timestamp()
             user_service.insert(email, email, pwd, str(ts), 0)
         return Response("{status: true }",
                         status=201,
                         mimetype='application/json')
     elif request.method == 'GET':
         users = user_service.query({})
         return jsonify(users), 200
     elif request.method == 'POST':
         email = request.json['email']
         user_type = request.json['user_type']
         name = request.json['name']
         ts = datetime.datetime.now().timestamp()
         if len(user_service.query({'email': email})) > 0:
             user_service.update(
                 email, {
                     'name': name,
                     'pwd': '',
                     'init_code': str(ts),
                     'user_type': user_type
                 })
         else:
             user_service.insert(email, name, "", str(ts), user_type)
         app.logger.info(f"Create user: user={email}&ts={ts}")
         return jsonify({'url': f'?user={email}&ts={ts}'})
示例#12
0
    def test_updateUser(self):
        ini_service = InitialService()
        conn = ini_service.get_connection()
        user_service = UserService(conn)
        try:
            user_service.insert("*****@*****.**", "qi chang",
                                "**(SDFDSF", None, 0)
            user_result = user_service.query(
                {'email': '*****@*****.**'})
            assert user_result[0]['name'] == 'qi chang'
            assert 'pwd' not in user_result
            assert user_result[0]['init_code'] is None
            assert user_result[0]['user_type'] == 0

            user_result = user_service.query({
                'email': '*****@*****.**',
                'pwd': '**(SDFDSF'
            })
            assert user_result[0]['name'] == 'qi chang'
            assert 'pwd' not in user_result
            assert user_result[0]['init_code'] is None
            assert user_result[0]['user_type'] == 0

            user_result = user_service.query({
                'email': '*****@*****.**',
                'pwd': 'WrongPwd'
            })
            assert len(user_result) == 0

        except Error:
            pass
        result = user_service.update("*****@*****.**", {
            "name": "MK",
            "pwd": "pwdpwd",
            "init_code": "*&**I",
            "user_type": 1
        })
        assert result is True
        user_result = user_service.query({'email': '*****@*****.**'})
        assert user_result[0]['name'] == 'MK'
        assert 'pwd' not in user_result
        assert user_result[0]['init_code'] == '*&**I'
        assert user_result[0]['user_type'] == 1

        user_result = user_service.query({
            'email': '*****@*****.**',
            'pwd': 'pwdpwd'
        })
        assert user_result[0]['name'] == 'MK'
        assert 'pwd' not in user_result
        assert user_result[0]['init_code'] == '*&**I'
        assert user_result[0]['user_type'] == 1

        user_result = user_service.query({
            'email': '*****@*****.**',
            'pwd': '**(SDFDSF'
        })
        assert len(user_result) == 0

        # not existing email will return False
        result = user_service.update("*****@*****.**", {
            "name": "MK",
            "pwd": "***",
            "init_code": "*&**I",
            "user_type": 1
        })
        assert result is False

        # unqualified key will ignored.

        result = user_service.update(
            "*****@*****.**", {
                "email": "*****@*****.**",
                "name": "MK",
                "pwd": "***",
                "init_code": "*&**I",
                "user_type": 1
            })
        assert result is True
        result = user_service.query({"email": "*****@*****.**"})
        assert len(result) == 1