From 7dd29ad24a62ea8ade1d2f59b1c1149fb40e149d Mon Sep 17 00:00:00 2001 From: Eric Asante Date: Mon, 4 Nov 2024 14:14:43 -0500 Subject: [PATCH] Complete MILESTONE5 --- Backend/main.py | 54 +++++++++++++++ Backend/petfuc.py | 22 ++++++ Backend/test_main.py | 157 +++++++++++++++++++++++++++++++++++++++++++ Backend/userfuc.py | 39 +++++++++++ 4 files changed, 272 insertions(+) create mode 100644 Backend/main.py create mode 100644 Backend/petfuc.py create mode 100644 Backend/test_main.py create mode 100644 Backend/userfuc.py diff --git a/Backend/main.py b/Backend/main.py new file mode 100644 index 0000000..0728623 --- /dev/null +++ b/Backend/main.py @@ -0,0 +1,54 @@ +""" +This module provides functions for HTTP communication and +route functions +""" +from flask import Flask, request, jsonify +from petfuc import get_random_pet +from userfuc import add_user_faviorte, remove_user_faviorte, replace_user_location + +app = Flask(__name__) + +#Get Random Pet information - For homepage +@app.route("/Get_Random_pet", methods=["GET"]) +def random_pet(): + """ + Function to extract random pet information + """ + return get_random_pet(), 200 # Return dog information + +# Faviortes route. add user faviorte pet to database +@app.route("/Add_User_Faviorte", methods=["POST"]) +def adduserfaviorte(): + """ + Function to add user from database + """ + json_data = request.get_json() + + # Api accesses database and append post json in database + #Retrun database with succses code + return jsonify(add_user_faviorte(json_data)), 200 + +# Un Faviote Route. remove user faviorte pet from there database +@app.route("/Remove_User_Faviorte", methods=["DELETE"]) +def removeuserfaviorte(): + """ + Function to remove user from database + """ + json_data = request.get_json() + + # Api accesses database and append post json in database + #Retrun database with succses code + return jsonify(remove_user_faviorte(json_data)), 200 # return new user database + +# Change a Users account location +@app.route("/Change_User_Location", methods=["PUT"]) +def replace_user_information(): + """ + Function to change the location associated with + an account + """ + newlocation = request.get_json() # Get new location from post request + return jsonify(replace_user_location(newlocation)) # retrun user account info + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=5000, debug=True) diff --git a/Backend/petfuc.py b/Backend/petfuc.py new file mode 100644 index 0000000..5e60700 --- /dev/null +++ b/Backend/petfuc.py @@ -0,0 +1,22 @@ +""" +This module provides functions for HTTP communication and +route functions +""" +from flask import jsonify + + +def get_random_pet(): + """ + Function to generate random ID and return pet + asscoieted with that ID + """ + randomint = "9" # APi generates random interger that represents a PET ID + # Api accesses database and return information in data base + #Retrun information such as profile picture on the pet accosiated with the random ID + data = {"id": randomint, + "name":"sam", + "sex":"male", + "Age":"8", + "location":"Connecticwut", + "Breed": "Pug"} + return jsonify(data) # Return dog information diff --git a/Backend/test_main.py b/Backend/test_main.py new file mode 100644 index 0000000..6ff3eea --- /dev/null +++ b/Backend/test_main.py @@ -0,0 +1,157 @@ +""" +Pytest for fake API +""" + +import requests + +def test_get_random_pet(): + """ + Test for http://localhost:5000/Get_Random_pet + """ + + url = "http://localhost:5000" + + response = requests.get((url + "/Get_Random_pet"), timeout=10) + + expected_response = { + "id": "9", + "name": "sam", + "sex": "male", + "Age": "8", + "location": "Connecticwut", + "Breed": "Pug" + } + + assert response.json() == expected_response + +# ----------------------------------------------------------------------------- + +def test_add_user_faviorte(): + """ + Test for http://localhost:5000/Add_User_Faviorte + """ + + url = "http://localhost:5000" + + faviortepet1 = { + "id": "9", + "name": "sam", + "sex": "male", + "Age": "8", + "location": "Connecticut", + "Breed": "Pug" + } + + + response = requests.post((url + "/Add_User_Faviorte"), json=faviortepet1, timeout=10) + + assert response.json() == [{'Age': '8', + 'Breed': 'Pug', + 'id': '9', + 'location': + 'Connecticut', + 'name': 'sam', + 'sex': 'male'}] + + faviortepet2 = { + "id": "90", + "name": "ben", + "sex": "male", + "Age": "2", + "location": "New York", + "Breed": "Husky" + } + + response = requests.post((url + "/Add_User_Faviorte"), json=faviortepet2, timeout=10) + + assert response.json() == [{'Age': '8', + 'Breed': 'Pug', + 'id': '9', + 'location': 'Connecticut', + 'name': 'sam', + 'sex': 'male'}, + {'Age': '2', + 'Breed': 'Husky', + 'id': '90', + 'location': 'New York', + 'name': 'ben', + 'sex': 'male'}] + +# ---------------------------------------------------------------------------------- + +def test_remove_user_faviorte(): + """ + Test for http://localhost:5000/Remove_User_Faviorte + """ + + url = "http://localhost:5000" + + faviortepet1 = { + "id": "9", + "name": "sam", + "sex": "male", + "Age": "8", + "location": "Connecticut", + "Breed": "Pug" + } + + + response = requests.delete((url + "/Remove_User_Faviorte"), json=faviortepet1, timeout=10) + + assert response.json() == [{'Age': '2', + 'Breed': 'Husky', + 'id': '90', + 'location': 'New York', + 'name': 'ben', + 'sex': 'male'}] + + faviortepet2 = { + "id": "90", + "name": "ben", + "sex": "male", + "Age": "2", + "location": "New York", + "Breed": "Husky" + } + + response = requests.delete((url + "/Remove_User_Faviorte"), json=faviortepet2, timeout=10) + + assert response.json() == [] +# ---------------------------------------------------------------------------------- + + + +def test_change_user_location(): + """ + Test for http://localhost:5000/Change_User_Location + """ + + url = "http://localhost:5000" + + response = requests.put((url + "/Change_User_Location"), + json={"Location":"New York"}, + timeout=10) + + assert response.json() == {"Location": "New York", + "Name": "eric", + "Occupation": "Student", + "Password": "2020"} + + + response = requests.put((url + "/Change_User_Location"), + json={"Location":"Chicago"}, + timeout=10) + + assert response.json() == {"Location": "Chicago", + "Name": "eric", + "Occupation": "Student", + "Password": "2020"} + + response = requests.put((url + "/Change_User_Location"), + json={"Location":"Massachusetts"}, + timeout=10) + + assert response.json() == {"Location": "Massachusetts", + "Name": "eric", + "Occupation": "Student", + "Password": "2020"} diff --git a/Backend/userfuc.py b/Backend/userfuc.py new file mode 100644 index 0000000..42f2470 --- /dev/null +++ b/Backend/userfuc.py @@ -0,0 +1,39 @@ +""" +This module provides functions for HTTP communication and +route functions +""" +UserFaviorteDataBase = [] # pretend this is a database + +UserAccInfo = {"Name":"eric", + "Password":"2020", + "Location":"connecticut", + "Occupation":"Student"} # example user information + +# add user faviorte pet to database +def add_user_faviorte(jsondata): + """ + add user to database and return database elements + """ + UserFaviorteDataBase.append(jsondata) + # accesses database and append post json in database + return UserFaviorteDataBase # return new user database + + +# Remove user faviorte pet to database +def remove_user_faviorte(jsondata): + """ + remove user from database and return database elements + """ + UserFaviorteDataBase.remove(jsondata) + # accesses database and append post json in database + return UserFaviorteDataBase # return new user database + + +# Change a Users account location +def replace_user_location(newlocation): + """ + Replace location associated with a user account + """ + newlocation = newlocation.get('Location') + UserAccInfo["Location"] = newlocation # Set location accosiated with user to new location + return UserAccInfo # retrun user account info \ No newline at end of file