def independent_register_and_verify_email_scope_class() -> dict: """ Verify user with email different from the register email. Keys of returned dict: - register_email - verify_email - password - account_id - token """ register_email = generate_email() verify_email = generate_email() with register_and_verify_with_diff_emails_impl(register_email, verify_email) as user: yield user
def register_login_new_user_impl() -> dict: """ Create a new user, register the new user and log in. My own home id will be yield too. A dict will be returned, and keys are: - client - account_id - token - email - password - home_id """ client: Client = get_client_from_orm_by_id(3) email = generate_email() password = "******" # register user register = TestRegisterNewUserSuccessfully() register.config.variables(**{ "client": client, "email": email, "password": password }) register.test_start() # login login = LoginV2() login.config.variables(**{ "client": client, "email": email, "password": password }) login.test_start() # {"account_id": ?, "token": ?} token_dict = get_sub_dict(login.get_export_variables(), *['account_id', 'token']) get_home_list = GetHomeList() get_home_list.config.variables(**token_dict, client=client) get_home_list.test_start() my_own_home_id = get_home_list.get_export_variables()["my_own_home_id"] yield { **token_dict, "email": email, "password": password, "client": client, "home_id": my_own_home_id } # delete user delete_user = DeleteUser() delete_user.with_variables({}) # get rid of the effect on session variables from previous instances delete_user.config.variables(client=client, **token_dict) delete_user.test_start()
def register_login_new_users_impl(user_num=None) -> dict: """ Create users, register new users and log in. My own home id will be yield too. A dict will be returned, and keys are: - user_list """ user_list = [] client: Client = get_client_from_orm_by_name('ios') for i in range(user_num): email = generate_email() password = "******" # register user register = TestRegisterNewUserSuccessfully() register.config.variables(**{ "client": client, "email": email, "password": password }) register.run() # login login = LoginV2() login.config.variables(**{ "client": client, "email": email, "password": password }) login.run() # {"account_id": ?, "token": ?} token_dict = get_sub_dict(login.get_export_variables(), *['account_id', 'token', 'user_info']) user_list.append(token_dict) yield user_list # delete user for token_dict in user_list: delete_user = DeleteUser() delete_user.with_variables( {} ) # get rid of the effect on session variables from previous instances delete_user.config.variables(client=client, **token_dict) delete_user.run()
def setup(request): """Arrange for testcase.""" # acceptable json data email = generate_email() json_data = { "email": email, "password": "******", "code": "1234", "verifyEmail": email, "isRequiredVerify": True, "country_code": "US", "acceptMarketingEmail": False, "registerAppVersion": "${getattr($client, client_version)}" } # decide final json data to be sent if (param_len := len(request.param)) == 3: param_name, param_value, error_code = request.param json_data[param_name] = param_value
def register_login_new_user_with_no_auth_impl() -> dict: """ Create a new user, register the new user with email not been verified and log in. A dict will be returned, and keys are: - client - account_id - token - email - password """ client = clients.ios email = generate_email() password = "******" # register user (TestRegisterWithNoAuth().with_variables({ "client": client, "email": email, "password": password }).run()) # login login_result = (LoginV2().with_variables({ "client": client, "email": email, "password": password }).run()) # {"account_id": <account id>, "token": <token>} token_dict = get_sub_dict(login_result.get_export_variables(), *['account_id', 'token']) yield { **token_dict, "email": email, "password": password, "client": client, } # delete user (DeleteUser().with_variables({"client": client, **token_dict}).run())
from httprunner import HttpRunner, Config, Step, RunTestCase from runway.apis.iot.vesync.user import DeleteUser from runway.apis.iot.vesync.user import LoginV2 from runway.apis.store.user import Login from runway.builtin.email import generate_email from runway.builtin.hash import get_md5_hex_digest from runway.configs.client import clients from .base_testcase_register_with_no_auth import TestRegisterWithNoAuth as RegisterNewUser plain_password = "******" hashed_password = get_md5_hex_digest(plain_password) params = [ # email, register password, login password (generate_email(), hashed_password, hashed_password), (generate_email(), plain_password, plain_password), ] @pytest.fixture(autouse=True, params=params) def setup(request): config: Config = request.cls.config email, register_password, login_password = request.param config.variables(email=email, register_password=register_password, login_password=login_password) class TestLoginPasswordSameAsRegisterPassword(HttpRunner):
import pytest from httprunner import HttpRunner, Config, Step, RunTestCase from runway.apis.iot.vesync.user import DeleteUser from runway.apis.iot.vesync.user import LoginV2 from runway.builtin.email import generate_email from .base_testcase_register_with_no_auth import TestRegisterWithNoAuth as RegisterNewUser emails = [ generate_email(), generate_email(extra="_"), generate_email(extra="%"), generate_email(extra="+"), generate_email(extra="-") ] @pytest.fixture(autouse=True, params=emails) def setup(request): config: Config = request.cls.config config.variables(email=request.param) class TestRegisterWithValidEmail(HttpRunner): config = (Config("P-使用满足正则表达式的邮箱注册,可以注册成功").variables( **{ "client": "${get_client_from_orm_by_id(1)}", "email": None, "password": "******" }))
import pytest from httprunner import HttpRunner, Config, Step, RunTestCase from runway.apis.iot.vesync.user import DeleteUser from runway.apis.iot.vesync.user import LoginV2 from runway.apis.iot.vesync.user import RunApiIsAccountExist from runway.apis.iot.vesync.user import UpgradeGuest from runway.apis.iot.vesync.user import is_account_exist_error_code from runway.builtin.email import generate_email from .base_testcase_upgrade_guest_to_user import TestUpgradeGuestToUser as UpgradeGuestToUser @pytest.fixture(params=[ generate_email(), generate_email(extra="_"), generate_email(extra="%"), generate_email(extra="+"), generate_email(extra="-") ]) def valid_email(request): """Return one email each time.""" config: Config = request.cls.config config.variables(email=request.param) @pytest.fixture(params=[ (generate_email(domain_name="@chacuo.net"), is_account_exist_error_code.invalid_email), (generate_email(domain_name="@027168.com"), is_account_exist_error_code.invalid_email), ])
from httprunner import HttpRunner, Config, Step, RunTestCase from runway.apis.iot.vesync.user import RegisterV2 from runway.apis.iot.vesync.user import RunApiIsAccountExist from runway.apis.iot.vesync.user import DeleteUser from runway.apis.iot.vesync.user import LoginV2 from runway.builtin.email import generate_email lowercase_email = generate_email() uppercase_email = lowercase_email.upper() class TestRegisterWithUppercaseEmail(HttpRunner): config = (Config("P-使用大写字母邮箱注册成功后,使用大写或小写的形式均能登陆成功").variables( **{ "client": "${get_client_from_orm_by_id(1)}", "password": "******" })) teststeps = [ Step( RunApiIsAccountExist("调用 isAccountExist 时传入大写的邮箱 (但使用小写邮箱获取验证码)"). with_variables(**{ "email": uppercase_email, "lowercase_email": lowercase_email }).request().teardown_hook( "${get_verify_code_from_redis($lowercase_email)}", "verify_code").export().variable( "verify_code").validate().assert_equal("body.code", 0)), Step(
import pytest from httprunner import HttpRunner, Config, Step from runway.apis.iot.vesync.user import RunApiIsAccountExist from runway.apis.iot.vesync.user import register_v2_error_code from runway.builtin.email import generate_email expected_error_code = register_v2_error_code.invalid_email params = [ # email, password, error code (generate_email(), "12345", expected_error_code), ] @pytest.fixture(autouse=True, params=params) def setup(request): config: Config = request.cls.config email, password, error_code = request.param config.variables(email=email, password=password, error_code=error_code) @pytest.mark.skip("目前后端没有做密码是否合法的校验") class TestFailToRegisterWithInvalidPassword(HttpRunner): config = (Config("N-密码不合法,注册失败").variables( **{ "client": "${get_client_from_orm_by_id(1)}", "email": None, "password": None, "error_code": None }))
def register_login_new_users_and_complete_lottery_impl(user_num=2) -> dict: """ Create users, register new users and log in ,complete three times lottery. A dict will be returned, and keys are: - user_list """ user_list = [] expected_lottery_prize_people_list = [] client: Client = get_client_from_orm_by_id(1) for i in range(user_num): email = generate_email() password = "******" # register user register = TestRegisterNewUserSuccessfully() register.with_variables({ "client": client, "email": email, "password": password }) register.run() # login login = LoginV2() login.with_variables({ "client": client, "email": email, "password": password }) login.run() # {"account_id": ?, "token": ?} token_dict = get_sub_dict(login.get_export_variables(), *['account_id', 'token', 'user_info']) user_list.append(token_dict) # getRemainingTimes get_remaining_times = BaseGetRemainingTimesSuccessfully() get_remaining_times.with_variables({ **get_sub_dict(login.get_export_variables(), *[ 'account_id', 'token' ]), "client": client, "award_pool_name": anniversary_draw_settings.award_pool_name, "trigger_source": "$award_pool_name" }) get_remaining_times.run() # draw lottery draw = BaseDrawSuccessfully() draw.with_variables({ **get_sub_dict(login.get_export_variables(), *[ 'account_id', 'token', 'user_info' ]), "client": client, "award_pool_name": anniversary_draw_settings.award_pool_name, "trigger_source": "$award_pool_name", "expected_remaining_times": 0, "expected_lottery_prize_people_list": expected_lottery_prize_people_list }) draw.run() expected_lottery_prize_people_list = draw.get_export_variables( )['expected_lottery_prize_people_list'] yield { "user_list": user_list, "expected_lottery_prize_people_list": expected_lottery_prize_people_list } # delete user for token_dict in user_list: delete_user = DeleteUser() delete_user.with_variables( {} ) # get rid of the effect on session variables from previous instances delete_user.config.variables(client=client, **token_dict) delete_user.run()
def register_login_web_user_with_no_auth_impl() -> dict: """ Create a new user, register the new user with email not been verified and log in. A dict will be returned, and keys are: - client - account_id - token - email - password """ email = generate_email() password = "******" # register user register = TestRegisterWithNoAuth() register.config.variables(**{ "client": clients.web, "email": email, "password": password }) register.test_start() # log in web login = Login() login.config.variables(**{ "client": clients.web, "email": email, "password": password }) login.test_start() # {"account_id": <account id>, "token": <token>} token_dict = get_sub_dict(login.get_export_variables(), *['account_id', 'token']) yield { **token_dict, "email": email, "password": password, "client": clients.ios, } # log in app login = LoginV2() login.config.variables(**{ "client": clients.ios, "email": email, "password": password }) login.test_start() # {"account_id": <account id>, "token": <token>} token_dict = get_sub_dict(login.get_export_variables(), *['account_id', 'token']) # delete user delete_user = DeleteUser() delete_user.with_variables( {} ) # get rid of the effect on session variables from previous instances delete_user.config.variables(client=clients.ios, **token_dict) delete_user.test_start()
def register_login_new_user_impl(is_generate_mall_user: bool = False, client: Client = clients.ios) -> dict: """ Create a new user, register the new user and log in. My own home id will be yield too. A dict will be returned, and keys are: - client - account_id - token - email - password - home_id - user_info """ client = client email = generate_email() password = "******" # register user (TestRegisterNewUserSuccessfully().with_variables({ "client": client, "email": email, "password": password }).run()) # login login_result = (LoginV2().with_variables({ "client": client, "email": email, "password": password }).run()) # {"account_id": ?, "token": ?} export_vars = login_result.get_export_variables() token_dict = get_sub_dict(export_vars, *['account_id', 'token']) user_info = export_vars["user_info"] get_home_list_result = (GetHomeList().with_variables({ "client": client, **token_dict }).run()) my_own_home_id = get_home_list_result.get_export_variables( )["my_own_home_id"] # create mall user if is_generate_mall_user: (CreateMallUserV3().with_variables({ "client": client, **token_dict }).run()) yield { **token_dict, "email": email, "password": password, "client": client, "home_id": my_own_home_id, "user_info": user_info } # delete user (DeleteUser().with_variables({"client": client, **token_dict}).run())
import pytest from httprunner import HttpRunner, Config, Step, RunTestCase from runway.builtin.email import generate_email from .register_with_correct_verify_code_test import TestRegisterWithCorrectVerifyCode as RegisterNewUser emails = [ (generate_email(), "US"), (generate_email(), "GB"), (generate_email(), "FR"), (generate_email(), "CA"), ] @pytest.fixture(autouse=True, params=emails) def setup(request): config: Config = request.cls.config email, user_country_code = request.param config.variables(email=email, user_country_code=user_country_code) class TestRegisterWithValidCountryCode(HttpRunner): config = (Config("P-国家码为 ISO3166 中的国家码,可以注册成功").variables( **{ "client": "${get_client_from_orm_by_id(1)}", "email": None, "user_country_code": None, "password": "******" }))
import pytest from httprunner import HttpRunner, Config, Step from runway.apis.iot.vesync.user import RunApiIsAccountExist from runway.apis.iot.vesync.user import register_v2_error_code from runway.builtin.email import generate_email emails = [ (generate_email(domain_name="@chacuo.net"), register_v2_error_code.invalid_email), (generate_email(domain_name="@027168.com"), register_v2_error_code.invalid_email), ] @pytest.fixture(autouse=True, params=emails) def setup(request): config: Config = request.cls.config config.variables(email=request.param[0], error_code=request.param[1]) class TestFailToRegisterWithTemporaryEmail(HttpRunner): config = (Config("N-使用临时邮箱后缀注册,注册失败").variables( **{ "client": "${get_client_from_orm_by_id(1)}", "email": None, "password": "******", "error_code": None }))