def test_user_assign_role_remove_successful(admin_token, execute_sql):
    """
    删除用户的角色成功
    :param admin_token:
    :param execute_sql:
    :return:
    """
    sql1 = """
    DELETE FROM user_role where user_id=5;
    """
    sql2 = """
    INSERT INTO user_role VALUES (5, 3);
    """
    sql3 = """
    INSERT INTO user_role VALUES (5, 2);
    """
    execute_sql(sql1)
    execute_sql(sql2)
    execute_sql(sql3)
    data = {"action": "remove", "role_ids": [1, 2]}
    result = http_post(user_assign_role_url.format(user_id=5),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
    assert len(result.json()["data"]["assigned_roles"]) == 1
    assert result.json()["data"]["assigned_roles"][0]["id"] == 3
    assert 1 in [x["id"] for x in result.json()["data"]["available_roles"]]
def test_update_device_successful(admin_token):
    """
    更新设备成功
    :param admin_token:
    :return:
    """
    data = {
        "type": "phone",
        "brand": "小米",
        "model": "小米9 4800万超广角三摄 8GB+256GB update",
        "os": "android",
        "os_version": "9.0",
        "resolution": "2340*1080",
        "asset_no": "20150731-5555",
        "root": "yes",
        "location": "北京",
        "owner": {
            "id": 2,
            "realname": "test1"
        },
        "current_user": {
            "id": 2,
            "realname": "test1"
        },
        "desc": "京东链接:https://item.jd.com/100002757767.html"
    }
    result = http_post(update_device_url.format(device_id=4),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['data']['model'] == "小米9 4800万超广角三摄 8GB+256GB update"
def test_assign_permission_remove_successful(admin_token,
                                             empty_role_permission,
                                             execute_sql):
    """
    删除角色权限成功
    :param admin_token:
    :param empty_role_permission:
    :param execute_sql:
    :return:
    """
    empty_role_permission(3)
    sql2 = """
    INSERT INTO role_permission VALUES (3, 1);
    """
    sql3 = """
    INSERT INTO role_permission VALUES (3, 4);
    """
    execute_sql(sql2)
    execute_sql(sql3)
    data = {"action": "remove", "permission_ids": [1, 5]}
    result = http_post(assign_permission_url.format(role_id=3),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
    assert len(result.json()["data"]["assigned_permissions"]) == 1
    assert result.json()["data"]["assigned_permissions"][0]["id"] == 4
    assert 1 in [
        x["id"] for x in result.json()["data"]["available_permissions"]
    ]
def test_modify_apply_device_successful(admin_token, empty_device_apply_record,
                                        execute_sql):
    """
    修改设备申请成功
    :param admin_token:
    :param empty_device_apply_record:
    :param execute_sql:
    :return:
    """
    empty_device_apply_record(1, 1)
    sql = """
        INSERT INTO device_apply_record VALUES (5, 1, 1, '2019-10-15 09:28:55', '2019-10-30 00:55:55', '测试需要', 3, NULL, NULL, NULL, NULL, 0, 0, '2019-10-15 16:16:48.399755', '2019-10-15 16:16:48.399755');
        """
    execute_sql(sql)
    data = {
        "apply_id": 5,
        "start_time": "2019-10-15 00:00:00",
        "end_time": "2019-10-30 23:59:59",
        "application_desc": "修改申请"
    }
    result = http_post(apply_url.format(device_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_assign_permission_add_successful(admin_token, empty_role,
                                          execute_sql):
    """
    添加角色权限成功
    :param admin_token:
    :param empty_role:
    :param execute_sql:
    :return:
    """
    empty_role(3)
    sql1 = """
    INSERT INTO role VALUES (3, '角色3', '描述3', '2019-10-18 17:45:21', '2019-10-18 17:45:21');
    """
    sql2 = """
    INSERT INTO role_permission VALUES (3, 1);
    """
    execute_sql(sql1)
    execute_sql(sql2)
    data = {"action": "add", "permission_ids": [2, 5]}
    result = http_post(assign_permission_url.format(role_id=3),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
    assert len(result.json()["data"]["assigned_permissions"]) == 3
    assert result.json()["data"]["assigned_permissions"][0]["id"] == 1
    assert result.json()["data"]["assigned_permissions"][1]["id"] == 2
    assert result.json()["data"]["assigned_permissions"][2]["id"] == 5
    assert 2 not in [
        x["id"] for x in result.json()["data"]["available_permissions"]
    ]
    assert 5 not in [
        x["id"] for x in result.json()["data"]["available_permissions"]
    ]
def test_apply_device_failed_duplicate_apply(admin_token,
                                             empty_device_apply_record):
    """
    申请设备失败,重复申请
    :param admin_token:
    :param empty_device_apply_record:
    :return:
    """
    empty_device_apply_record(1)
    data = {
        "start_time": "2019-10-15 09:28:55",
        "end_time": "2019-10-30 00:55:55",
        "application_desc": "测试需要"
    }
    http_post(apply_url.format(device_id=1), data=data, token=admin_token)
    result = http_post(apply_url.format(device_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 3005
    assert result.json()['msg'] == "重复申请"
def test_update_user_failed(admin_token, user_id, username, realname, email):
    """
    更新用户信息失败
    :param admin_token:
    :return:
    """
    data = {"username": username, "realname": realname, "email": email}
    result = http_post(update_user_url.format(user_id=user_id),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 2005
    assert result.json()['msg'] == "更新用户资料失败"
def test_login_successful(add_test_user):
    """
    成功登录
    :param add_test_user:
    :return:
    """
    data = {"username": "******",
            "password": "******"}
    result = http_post(login_url, data)
    assert result.json()['code'] == 0
    assert result.json()['data']['username'] == 'username_test'
    assert result.json()['data']['access_token']
def test_login_failed_not_correct(add_test_user, username, password):
    """
    用户名或密码不正确,登录失败
    :param add_test_user:
    :param username:
    :param password:
    :return:
    """
    data = {"username": username,
            "password": password}
    result = http_post(login_url, data)
    assert result.json()['code'] == 2003
    assert result.json()['msg'] == "用户名或密码无效"
def test_register_failed_exist_user(add_test_user):
    """
    用户名已存在,注册失败
    :param add_test_user:
    :return:
    """
    data = {"username": "******",
            "realname": "realname_test",
            "email": "*****@*****.**",
            "password": "******",
            "repeat_password": "******"}
    result = http_post(register_url, data)
    assert result.json()["code"] == 2000
    assert result.json()["msg"] == "用户已存在"
def test_register_successful(delete_test_user):
    """
    成功注册
    :param delete_test_user:
    :return:
    """
    data = {"username": "******",
            "realname": "realname_test",
            "email": "*****@*****.**",
            "password": "******",
            "repeat_password": "******"}
    result = http_post(register_url, data)
    assert result.json()["code"] == 0
    assert result.json()["data"]["username"] == "username_test"
Example #12
0
def test1_token():
    session = get_db_session()
    user = session.query(User).filter_by(username='******').first()
    if not user:
        user = User(id=2,
                    username='******',
                    realname="test1",
                    email="*****@*****.**",
                    password="******",
                    status=1)
        session.add(user)
        session.commit()
    data = {"username": "******", "password": "******"}
    return http_post(HOST + "auth/login", data).json()['data']['access_token']
def test_update_password_successful(test1_token):
    """
    修改密码成功
    :param test1_token:
    :return:
    """
    data = {
        "old_password": "******",
        "new_password": "******",
        "repeat_password": "******"
    }
    result = http_post(update_password_url.format(user_id=2),
                       data=data,
                       token=test1_token)
    assert result.json()['code'] == 0
def test_update_role_failed(admin_token, empty_role, execute_sql):
    """
    更新角色失败,不存在的角色
    :param admin_token:
    :param empty_role:
    :param execute_sql:
    :return:
    """
    empty_role(997)
    data = {"name": "角色997", "desc": "描述998"}
    result = http_post(update_role_url.format(role_id=997),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 4002
    assert result.json()['msg'] == "角色不存在"
def test_add_role_successful(admin_token, execute_sql):
    """
    添加角色成功
    :param admin_token:
    :param execute_sql:
    :return:
    """
    sql = """
    DELETE FROM role WHERE name="角色add";
    """
    execute_sql(sql)
    data = {"name": "角色add", "desc": "描述add"}
    result = http_post(add_role_url, data=data, token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_apply_device_failed_not_available(admin_token):
    """
    申请设备失败,设备不可用
    :param admin_token:
    :return:
    """
    data = {
        "start_time": "2019-10-15 09:28:55",
        "end_time": "2019-10-30 00:55:55",
        "application_desc": "测试需要"
    }
    result = http_post(apply_url.format(device_id=9999),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 3004
    assert result.json()['msg'] == "设备不可用"
def test_update_password_failed(admin_token):
    """
    修改密码失败,原密码校验不通过
    :param admin_token:
    :return:
    """
    data = {
        "old_password": "******",
        "new_password": "******",
        "repeat_password": "******"
    }
    result = http_post(update_password_url.format(user_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 2006
    assert result.json()['msg'] == "密码不一致"
def test_update_password_failed_repeat_password(admin_token):
    """
    修改密码失败,新密码输入不一致
    :param admin_token:
    :return:
    """
    data = {
        "old_password": "******",
        "new_password": "******",
        "repeat_password": "******"
    }
    result = http_post(update_password_url.format(user_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 1000
    assert result.json()['data']['_schema'] == ['password must be equivalent']
def test_login_failed_disable_user(add_test_user):
    """
    已被禁用的用户无法登录
    :param add_test_user:
    :return:
    """
    session = get_db_session()
    user = session.query(User).filter_by(username='******').first()
    user.status = 0
    session.add(user)
    session.commit()
    data = {"username": "******",
            "password": "******"}
    result = http_post(login_url, data)
    assert result.json()['code'] == 2002
    assert result.json()['msg'] == "用户已被禁用"
def test_update_user_successful(admin_token):
    """
    更新用户信息成功
    :param admin_token:
    :return:
    """
    data = {
        "username": "******",
        "realname": "new_admin",
        "email": "*****@*****.**"
    }
    result = http_post(update_user_url.format(user_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['data']['realname'] == "new_admin"
    assert result.json()['data']['email'] == "*****@*****.**"
def test_register_failed_error_parameter(username, realname, email, password, repeat_password):
    """
    使用错误参数注册失败
    :param username:
    :param realname:
    :param email:
    :param password:
    :param repeat_password:
    :return:
    """
    data = {"username": username,
            "realname": realname,
            "email": email,
            "password": password,
            "repeat_password": repeat_password}
    result = http_post(register_url, data)
    assert result.json()['code'] == 1000
    assert result.json()['msg'] == "参数错误"
def test_apply_device_successful(admin_token, empty_device_apply_record):
    """
    申请设备成功
    :param admin_token:
    :param empty_device_apply_record:
    :return:
    """
    empty_device_apply_record(1)
    data = {
        "start_time": "2019-10-15 09:28:55",
        "end_time": "2019-10-30 00:55:55",
        "application_desc": "测试需要"
    }
    result = http_post(apply_url.format(device_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_owner_approval_apply_failed(test1_token, empty_device_apply_record,
                                     execute_sql):
    """
    owner审批失败,不能审批其他owner的
    :param test1_token:
    :param empty_device_apply_record:
    :param execute_sql:
    :return:
    """
    empty_device_apply_record(1, 1)
    sql = """INSERT INTO device_apply_record VALUES (1, 1, 2, '2019-10-15 09:28:55', '2019-10-30 00:55:55', '测试需要', 1, NULL, NULL, NULL, NULL, 0, 0, '2019-10-15 16:16:48.399755', '2019-10-15 16:16:48.399755');
    """
    execute_sql(sql)
    data = {"approval": 1, "reason": "owner审批apply记录,失败"}
    result = http_post(audit_url.format(apply_id=1),
                       data=data,
                       token=test1_token)
    assert result.json()['code'] == 3007
    assert result.json()['msg'] == "审批失败"
def test_update_role_successful(admin_token, empty_role, execute_sql):
    """
    更新角色成功
    :param admin_token:
    :param empty_role:
    :param execute_sql:
    :return:
    """
    empty_role(998)
    sql = """
    INSERT INTO role VALUES (998, '角色998', '描述998', '2019-10-18 17:45:21', '2019-10-18 17:45:21');
    """
    execute_sql(sql)
    data = {"name": "角色998_new", "desc": "描述998"}
    result = http_post(update_role_url.format(role_id=998),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_admin_enable_device_successful(admin_token, execute_sql,
                                        empty_device):
    """
    admin启用设备成功
    :param admin_token:
    :param execute_sql:
    :param empty_device:
    :return:
    """
    empty_device(13)
    sql = """
        INSERT INTO device VALUES (13, 'phone', 'Apple', 'Apple iPhone XR (A2108) 128GB 黑色 移动联通电信4G手机 双卡双待', 'android', '12.1.4', '1792×828', '20150731-0134', 'no', '北京', 0, 2, 3, '这个是补充信息', '2019-09-13 09:28:55', '2019-10-17 16:34:51');
        """
    execute_sql(sql)
    data = {"disable": "false"}
    result = http_post(disable_device_url.format(device_id=13),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_common_user_disable_device_failed(test1_token, execute_sql,
                                           empty_device):
    """
    普通用户禁用他人设备失败
    :param test1_token:
    :param execute_sql:
    :param empty_device:
    :return:
    """
    empty_device(12)
    sql = """
        INSERT INTO device VALUES (12, 'phone', 'Apple', 'Apple iPhone XR (A2108) 128GB 黑色 移动联通电信4G手机 双卡双待', 'android', '12.1.4', '1792×828', '20150731-0134', 'no', '北京', 1, 3, 3, '这个是补充信息', '2019-09-13 09:28:55', '2019-10-17 16:34:51');
        """
    execute_sql(sql)
    data = {"disable": "true"}
    result = http_post(disable_device_url.format(device_id=12),
                       data=data,
                       token=test1_token)
    assert result.json()['code'] == 3009
    assert result.json()['msg'] == "禁用失败"
def test_update_role_failed_already_exist(admin_token, empty_role,
                                          execute_sql):
    """
    更新角色失败,角色重名
    :param admin_token:
    :param empty_role:
    :param execute_sql:
    :return:
    """
    empty_role(996)
    sql = """
    INSERT INTO role VALUES (996, '角色996', '描述996', '2019-10-18 17:45:21', '2019-10-18 17:45:21');
    """
    execute_sql(sql)
    data = {"name": "角色996", "desc": "描述996"}
    result = http_post(update_role_url.format(role_id=996),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 4000
    assert result.json()['msg'] == "角色已存在"
def test_admin_approval_return_failed(admin_token, empty_device_apply_record,
                                      execute_sql):
    """
    审批记录失败
    :param admin_token:
    :param empty_device_apply_record:
    :param execute_sql:
    :return:
    """
    empty_device_apply_record(1, 1)
    sql = """
    INSERT INTO device_apply_record VALUES (1, 1, 1, '2019-10-15 09:28:55', '2019-10-30 00:55:55', '测试需要', 3, NULL, NULL, NULL, NULL, 0, 0, '2019-10-15 16:16:48.399755', '2019-10-15 16:16:48.399755');
    """
    execute_sql(sql)
    data = {"approval": 0, "reason": "admin审批return记录,不通过"}
    result = http_post(audit_url.format(apply_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 3007
    assert result.json()['msg'] == "审批失败"
def test_admin_approval_apply_successful(admin_token,
                                         empty_device_apply_record,
                                         execute_sql):
    """
    admin审批通过apply的记录
    :param admin_token:
    :param empty_device_apply_record:
    :param execute_sql:
    :return:
    """
    empty_device_apply_record(1, 1)
    sql = """
    INSERT INTO device_apply_record VALUES (1, 1, 1, '2019-10-15 09:28:55', '2019-10-30 00:55:55', '测试需要', 1, NULL, NULL, NULL, NULL, 0, 0, '2019-10-15 16:16:48.399755', '2019-10-15 16:16:48.399755');
    """
    execute_sql(sql)
    data = {"approval": 1, "reason": "admin审批apply记录,通过"}
    result = http_post(audit_url.format(apply_id=1),
                       data=data,
                       token=admin_token)
    assert result.json()['code'] == 0
    assert result.json()['msg'] == "ok"
def test_add_role_failed_already_exist(admin_token, empty_role, execute_sql):
    """
    添加角色失败,已存在的角色
    :param admin_token:
    :param empty_role:
    :param execute_sql:
    :return:
    """
    empty_role(999)
    sql1 = """
    DELETE FROM role WHERE name="角色add_failed";
    """
    execute_sql(sql1)
    sql2 = """
    INSERT INTO role VALUES (999, '角色add_failed', '描述add_failed', '2019-10-18 17:45:21', '2019-10-18 17:45:21');
    """
    execute_sql(sql2)
    data = {"name": "角色add_failed", "desc": "描述add_failed"}
    result = http_post(add_role_url, data=data, token=admin_token)
    assert result.json()['code'] == 4000
    assert result.json()['msg'] == "角色已存在"