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, "")
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
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
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
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'
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" })
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
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
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
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)
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}'})
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