async def register_user(user: RegisterUser): if data.get_user(user.username): raise HTTPException( status_code=status.HTTP_409_CONFLICT, detail="User with same username already exists", ) if data.get_user_by_email(user.email): raise HTTPException( status_code=status.HTTP_409_CONFLICT, detail="This email already has an account", ) data.add_user(user.username, user.email, get_hash(user.password)) return_user = data.get_user(user.username) if not return_user: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Item not found, failed to register", ) access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) confirm_token = create_access_token(data={"sub": user[EMAIL_KEY]}, expires_delta=access_token_expires) backend = os.getenv("BACKEND_URL") or config.CONFIG.backend await send_email( user[EMAIL_KEY], { "username": user[USERNAME_KEY], "confirm_url": f"{backend}/confirm/{confirm_token}", }, ) return return_user
async def update_user_me(user: UpdateUser, current_user: User = Depends(current_user_is_active)): if data.get_user(user.username): raise HTTPException( status_code=status.HTTP_409_CONFLICT, detail="User with same username already exists", ) db_user = data.get_user(current_user[USERNAME_KEY]) data.update_user(db_user["id"], user) return data.get_user(user.username or current_user[USERNAME_KEY])
def test_log_in_with_valid_user(app, user): app.main_page.login_ok(user) # if is_account_blocked() is True: # account_unblock(user) sleep(time_to_present_result) app.make_screenshot() assert app.main_page.get_username() == users.get_user(user)['login']
def test_log_in_with_invalid_user(app, user): app.main_page.login_err(user) sleep(time_to_present_result) app.make_screenshot() assert app.main_page.is_unique_element_displayed( *getattr(MainPageLocators, users.get_user(user)["message"]))
def authenticate(username: str, password: str): user = data.get_user(username) if not user: return False if not verify(password, user[PASSWORD_KEY]): return False return user
async def unregister_users_me( current_user: UserInDB = Depends(get_current_user)): data.remove_user(current_user[USERNAME_KEY], current_user[EMAIL_KEY], current_user[PASSWORD_KEY]) if data.get_user(current_user[USERNAME_KEY]): raise HTTPException(status_code=status.HTTP_417_EXPECTATION_FAILED, detail="Failed to delete") return {"msg": "deleted"}
def test_sign_up_with_invalid_user(app, user): app.main_page.signup(user) sleep(time_to_present_result) sleep(time_to_enter_capcha) app.make_screenshot() assert app.main_page.is_unique_element_displayed( *getattr(MainPageLocators, users.get_user(user)["message"]))
def login_err(self, user): # with allure.step("Логинимся"): self.find_displayed_element(*self.locator.LOGIN_BTN).click() static_user = users.get_user(user) self.find_displayed_element(*self.locator.LOGIN_1).send_keys(static_user['login']) self.find_displayed_element(*self.locator.PASSWORD_1).send_keys(static_user['password']) # (keyring.get_password("system", static_user['login'])) self.click_submit_button_1()
def test_sign_up_with_invalid_login(app, user): app.main_page.click_signup_button() app.main_page.enter_email(user) app.main_page.enter_login_2(user) sleep(time_to_present_result) app.make_screenshot() assert app.main_page.is_unique_element_displayed( *getattr(MainPageLocators, users.get_user(user)["message"])) app.main_page.enter_password_2(user) sleep(time_to_enter_capcha) app.main_page.enter_captcha_2(user) app.main_page.click_submit_button_2() sleep(time_to_present_result) app.make_screenshot() assert app.main_page.is_unique_element_displayed( *getattr(MainPageLocators, users.get_user(user)["message_add"]))
def signup(self, user): # with allure.step("Заполняем данные нового пользователя"): self.find_displayed_element(*self.locator.SIGNUP_BTN).click() static_user = users.get_user(user) self.find_displayed_element(*self.locator.EMAIL).send_keys(static_user['email']) self.find_displayed_element(*self.locator.LOGIN_2).send_keys(static_user['login']) self.find_displayed_element(*self.locator.PASSWORD_2).send_keys(static_user['password']) self.click_RUB_currency() # Выбор РУБ для РС если не работает регистрация на лире self.find_displayed_element(*self.locator.CAPTCHA_2).send_keys(static_user['captcha']) self.click_submit_button_2() return static_user
async def get_current_user(token: str = Depends(oauth2_scheme)): credentials_exception = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) try: payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) username: str = payload.get("sub") if username is None: raise credentials_exception token_data = TokenData(username=username) except JWTError: raise credentials_exception user = data.get_user(username=token_data.username) if user is None: raise credentials_exception return user
def enter_captcha_2(self, user): self.find_displayed_element(*self.locator.CAPTCHA_2).send_keys(users.get_user(user)["captcha"])
def enter_password_2(self, user): self.find_displayed_element(*self.locator.PASSWORD_2).send_keys(users.get_user(user)["password"])
def enter_login_2(self, user): self.find_displayed_element(*self.locator.LOGIN_2).send_keys(users.get_user(user)["login"])
def enter_email(self, user): self.find_displayed_element(*self.locator.EMAIL).send_keys(users.get_user(user)["email"])