def step_impl(context, error_message): assert context.response_download_json["detail"] == error_message metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") metadata_sess.delete_json({"email": context.login['username']}) user_sess = MongoSessionRegular(collection='users') user_sess.delete_json({"email": "*****@*****.**"})
def step_impl(context): # rando = random.randint(1, 50000000) context.mongo_sesh = MongoSessionRegular(collection='users') context.email = "*****@*****.**" context.password = "******" if context.mongo_sesh.find_json({"email": context.email}) is not None: context.mongo_sesh.delete_json({"email": context.email}) context.client = TestClient(main.app) # add user in case not existing context.reg_response = context.client.post("/register", json={ "email": context.email, "password": context.password }) context.login_response = context.client.post("/login", data={ "username": context.email, "password": context.password }) context.user = context.mongo_sesh.find_json({"email": context.email}) # assert user["is_active"] assert context.user is not None
def run_around_tests(): pytest.login_info = {"username": "******", "password": "******"} pytest.supply_ids = [] yield # Tear Down # Remove supply list data and metadata metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") for id in pytest.supply_ids: metadata_sess.remove_supply_list_metadata( pytest.login_info["username"], UUID(id) ) data_sess.remove_supply_list( UUID(id) ) metadata_sess.delete_json({"email": pytest.login_info["username"]})
def step_impl(context, email, password): context.mongo_sesh = MongoSessionRegular(collection='users') context.register = {"email": email, "password": password} context.test_client = TestClient(main.app) context.response_register = context.test_client.post("/register", json=context.register) print(context.response_register.json()) context.user = email context.password = password
def step_impl(context): response_json = context.response.json() assert response_json['Message'] == 'Success' metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") response_json = context.response.json() metadata_sess.delete_json({"email": context.login_info['username']}) delete_result = data_sess.remove_supply_list( UUID(response_json['school_supply_id']))
def step_impl(context): context.mongo_sesh = MongoSessionRegular(collection='users') # rando = random.randint(1, 50000000) context.email = "*****@*****.**" context.password = "******" if context.mongo_sesh.find_json({"email": context.email}) is not None: context.mongo_sesh.delete_json({"email": context.email}) context.client = TestClient(main.app) # add user in case not existing context.reg_response = context.client.post("/register", json={ "email": context.email, "password": context.password }) context.user = None context.login_response = None assert context.reg_response.status_code == 201
def test_valid_created_checklist(): # Login login_response = test_client.post("/login", data=pytest.login_info) headers = {"Authorization": "Bearer " + login_response.json()["access_token"]} # Upload file image_file = open("features/test_files/morris_supply.png", "rb") file_obj = {"file": ("morris_supply.png", image_file, "image/png")} upload_response = test_client.post("/upload", files=file_obj, headers=headers) upload_response_json = upload_response.json() # Add supply list UUID in class variable to get it deleted pytest.supply_ids.append(upload_response_json["school_supply_id"]) # Check if there is a list of booleans that matches number of items metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") supply_metadata = metadata_sess.find_json({"email": pytest.login_info["username"]}) supply_data = data_sess.find_json({"id": supply_metadata["school_supply_ids"][0]}) assert len(supply_metadata["school_supply_checklist"][0]) == len(supply_data["list_of_supplies"])
def step_impl(context, error_message): print(context.response_download_json["detail"]) assert context.response_download_json["detail"] == error_message user_sess = MongoSessionRegular(collection='users') user_sess.delete_json({"email": "*****@*****.**"})
def step_impl(context): for supply_list in context.response_download_json["supply_lists"]: for item in supply_list["list_of_supplies"]: assert len(item) == 2 # print(item) metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") metadata_sess.delete_json({"email": context.login['username']}) data_sess.remove_supply_list(UUID(context.school_supply_id)) user_sess = MongoSessionRegular(collection='users') user_sess.delete_json({"email": "*****@*****.**"})
def step_impl(context): context.mongo_sesh = MongoSessionRegular(collection='users') user = context.mongo_sesh.find_json( {"email": "*****@*****.**"}) assert user is not None
def step_impl(context): assert context.response_edit_json["Message"] == "Success" metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") metadata_sess.delete_json({"email": context.login['username']}) data_sess.remove_supply_list(UUID(context.response_edit_json['school_supply_id']))
def step_impl(context, error_message): assert context.response_edit_error_json["detail"][0]["msg"] == error_message # Delete user user_sess = MongoSessionRegular(collection='users') user_sess.delete_json({"email": context.login["username"]})
def step_impl(context): assert context.response_edit_json["Message"] == "Success" assert context.response_edit_json["Email"] == context.login["username"] # Delete user user_sess = MongoSessionRegular(collection='users') user_sess.delete_json({"email": context.login["username"]})
from fastapi.testclient import TestClient from db.mongo import MongoSessionRegular import random import json from api.main import app client = TestClient(app) mongo_sesh = MongoSessionRegular(collection='users') # test registering a new user, loggin them in, and then loggiing out the account PERMANENTLY. also # Confirms account can no longer log in and db contains is_active=false def test_logout_user(): # rando = random.randint(1, 50000000) email = "*****@*****.**" password = "******" if mongo_sesh.find_json({"email": email}) is not None: mongo_sesh.delete_json({"email": email}) # add user in case not existing response = client.post("/register", json={ "email": email, "password": password }) # validate user email input assert response.json() != { "detail": [{ "loc": ["body", "email"], "msg": "value is not a valid email address",
from db.mongo import MongoSession, MongoSessionRegular from fastapi import APIRouter, Depends, File, HTTPException, UploadFile from model.supply_list import SupplyList from model.user import User from model.supply_list import SupplyListPrivilege from pdf2image import convert_from_bytes from PIL import Image from pydantic import BaseModel import uuid from api.auth import fastapi_users router = APIRouter() # Database for school supply list supplies_metadata_db = MongoSessionRegular( collection="school_supplies_metadata") mongo_db_supplies = MongoSessionRegular(collection="school_supplies") mongo_db_users = MongoSessionRegular(collection="users") @router.post("/upload") async def create_uploaded_file( user: User = Depends(fastapi_users.get_current_active_user), file: UploadFile = File(...), ): # Retrieve school supplies if file.content_type == "image/jpeg" or file.content_type == "image/png": supply_str = pytesseract.image_to_string(Image.open(file.file)) supply_arr = supply_str.splitlines() elif file.content_type == "application/pdf": # Will need Poppler image_obj = convert_from_bytes(file.file.read())
from db.mongo import MongoSession, MongoSessionRegular from fastapi_users import FastAPIUsers from fastapi_users.db import MongoDBUserDatabase from fastapi_users.password import get_password_hash from model.user import User, UserCreate, UserDB, UserUpdate from fastapi import APIRouter, Depends, HTTPException from api.config import jwt_authentication from model.user import User router2 = APIRouter() # Database for users mongo_db_users = MongoSession(collection="users") mongo_db_users_reg = MongoSessionRegular(collection="users") user_db = MongoDBUserDatabase(UserDB, mongo_db_users.collection) # User Management fastapi_users = FastAPIUsers( user_db, [jwt_authentication], User, UserCreate, UserUpdate, UserDB, ) @router2.post("/logout") async def logout_user(user: User = Depends(fastapi_users.get_current_active_user)): result = mongo_db_users_reg.logout_active_user(user) return result
from fastapi.testclient import TestClient from db.mongo import MongoSessionRegular import random import json from api.main import app import uuid client = TestClient(app) mongo_sesh = MongoSessionRegular(collection='users') metadata_sess = MongoSessionRegular(collection="school_supplies_metadata") data_sess = MongoSessionRegular(collection="school_supplies") # tests the functionality of the delete def test_delete_list_in_user(): #this is the relevant creation of the id, and attempt to remove it after uuid_temp = uuid.uuid4() metadata_sess.upsert_supply_list_metadata_email("*****@*****.**", uuid_temp) # stringer = str(uuid_temp) #trying to remove uuid # delete_list_response = client.delete("/List", data={"supply_list_id" : uuid_temp, "email": "*****@*****.**"}) delete_list_response = client.delete("/List?supply_list_id=" + str(uuid_temp) + "&email=myemail%40gmail.com") assert json.loads(delete_list_response.content)["Message"] == "Success, id has been removed" assert delete_list_response.status_code == 200 print('done') # def test_logout_non-existing_user():