diff --git a/.pytest_cache/v/cache/nodeids b/.pytest_cache/v/cache/nodeids index 45bf56c..e4d5dc2 100644 --- a/.pytest_cache/v/cache/nodeids +++ b/.pytest_cache/v/cache/nodeids @@ -1,7 +1,10 @@ [ "tests/test_auth.py::AuthTest::test_encode_auth_token", "tests/test_auth.py::AuthTest::test_login_endpoint", + "tests/test_auth.py::AuthTest::test_logout_access", + "tests/test_auth.py::AuthTest::test_logout_refresh", "tests/test_auth.py::AuthTest::test_registration_endpoint", + "tests/test_auth.py::AuthTest::test_token_refresh", "tests/test_config.py::TestTestingConfig::test_app_is_testing", "tests/test_config.py::TestDevelopmentConfig::test_app_is_development", "tests/test_config.py::TestProductionConfig::test_app_is_production", diff --git a/app.py b/app.py index df33739..7b1c37c 100644 --- a/app.py +++ b/app.py @@ -1,8 +1,9 @@ from flask import Blueprint,jsonify from flask_restful import Api from resources.Hello import Hello -from resources.requests import RequestResource, Request -from resources.user import UserResource, User +from resources.requests import (RequestResource, Request,ApproveRequest,DisapproveRequest, + ResolveRequest,GetAllRequest) +#from resources.user import UserResource, User from resources.auth.user_auth import (UserSignup, UserLogin, UserLogoutAccess, UserLogoutRefresh, UserSignup, TokenRefresh, AllUsers) @@ -12,10 +13,10 @@ #Route api.add_resource(Hello, '/','/Hello') -api.add_resource(RequestResource, '/user/request','/user/request/', endpoint ="requests") -api.add_resource(Request, '/user/request/','/user/request//', endpoint ="request" ) -api.add_resource(UserResource, '/user','/user/') -api.add_resource(User, '/user/','/user//') +api.add_resource(RequestResource, '/users/requests','/users/requests/', endpoint ="requests") +api.add_resource(Request, '/users/requests/','/users/requests//', endpoint ="request" ) +#api.add_resource(UserResource, '/users','/users/') +#api.add_resource(User, '/users/','/users//') #authentication endpoints api.add_resource(UserSignup, '/auth/signup', '/auth/signup/') @@ -24,3 +25,9 @@ api.add_resource(UserLogoutRefresh, '/auth/logout/refresh') api.add_resource(TokenRefresh, '/auth/token/refresh') api.add_resource(AllUsers, '/users') + +#Admin functions +api.add_resource(GetAllRequest,'/requests/','/requests') +api.add_resource(ApproveRequest, '/requests//approve') +api.add_resource(DisapproveRequest, '/requests//disapprove') +api.add_resource(ResolveRequest, '/requests//resolve') diff --git a/migrate.py b/migrate.py index 2e9783e..6536ec7 100644 --- a/migrate.py +++ b/migrate.py @@ -26,10 +26,11 @@ def create_tables(): CREATE TABLE tb_request( request_id SERIAL PRIMARY KEY, requestor INTEGER NOT NULL, - type VARCHAR(50) NOT NULL, - status VARCHAR(50) NOT NULL, + request_type VARCHAR(50) NOT NULL, + status VARCHAR(50) DEFAULT 'Pending', description TEXT, created_on TIMESTAMP NOT NULL, + last_modified TIMESTAMP, FOREIGN KEY (requestor) REFERENCES tb_users(user_id) ) """ diff --git a/models.py b/models.py index 2c7f43d..98ebf25 100644 --- a/models.py +++ b/models.py @@ -1,13 +1,6 @@ -""" -incomplete -implemented using data structures -#creating dtrequest, dtuser and dtlogin list with dictionary - to simulate data store - -""" - import psycopg2 -from config import dbconfig, basedir, filename , section +from datetime import datetime +from config import dbconfig, basedir, filename , section, DATABASE_URL import os import jwt @@ -19,7 +12,7 @@ -def test_connection(): +def connect(): """Test connection to the postgresql server""" conn = None @@ -52,142 +45,8 @@ def test_connection(): +if __name__ == '__main__': + connect() - - -#User sample data -dtusers = [ -{ - "id": 1, - "fname": "John", - "lname": "Doe", - "email": "john@gmail.com" - }, - { - "id": 2, - "fname": "Susan", - "lname": "Sue", - "email": "sue@gmail.com" - }, - { - "id": 3, - "fname": "Mary", - "lname": "Doe", - "email": "mary@gmail.com" - }, - { - "id": 4, - "fname": "Anto", - "lname": "Denis", - "email": "anto@gmail.com" - } -] - -#requests sample data -dtrequest = [ - { - "id": 1, - "requestor":"Anto kish", - "email": "anto@gmail.com", - "type": "maintenance", - "status":"Approved", - "desc": "Description goes here" - }, - { - "id": 2, - "requestor":"John Doe", - "email": "john@gmail.com", - "type": "repair", - "status":"Pending", - "desc": "Description goes here" - }, - { - "id": 3, - "requestor":"Anto kish", - "email": "anto@gmail.com", - "type": "maintenance", - "status":"Pending", - "desc": "Description goes here" - }, - { - "id": 4, - "requestor":"John Doe", - "email": "john@gmail.com", - "type": "maintenance", - "status":"Approved", - "desc": "Description goes here" - } -] -#login data -dtlogin = [ - { - "id": 1, - "username": "john@gmail.com", - "password": "pass" - }, - { - "id": 2, - "username": "sue@gmail.com", - "password": "pass" - } - -] - -def find_by_username(username): - query = """SELECT username,password FROM tb_users WHERE username=(%s)""" - - conn = None - result = None - try: - params = dbconfig(filename, section) - conn = psycopg2.connect(**params) - - cur = conn.cursor() - cur.execute(query,(username,)) - - result = cur.fetchone() - - #print(result) - - cur.close() - - except (Exception, psycopg2.DatabaseError) as error: - print(error) - finally: - if conn is not None: - conn.close() - return result - -def return_all(): - query = """select array_to_json(array_agg(row_to_json(t))) from ( - SELECT * FROM tb_users) t""" - conn = None - result = None - - try: - params = dbconfig(filename, section) - - conn = psycopg2.connect(**params) - - cur = conn.cursor() - cur.execute(query) - - result = cur.fetchall() - - cur.close() - - - except (Exception, psycopg2.DatabaseError) as error: - print (error) - finally: - if conn is not None: - conn.close() - return result - -current_user = find_by_username("antokish@gmail.com") - -if __name__ == '__main__': - #test_connection() - current_user[0] - print(return_all()) \ No newline at end of file + \ No newline at end of file diff --git a/resources/auth/user_auth.py b/resources/auth/user_auth.py index 3588882..6f5353b 100644 --- a/resources/auth/user_auth.py +++ b/resources/auth/user_auth.py @@ -4,7 +4,6 @@ from flask import Flask, abort, request , jsonify, g, json -from flask_httpauth import HTTPBasicAuth from flask_restful import Api, Resource, reqparse from resources.models import (insert_to_db, find_by_username, hash_password, verify_hash, return_all) @@ -13,7 +12,6 @@ jwt_required, jwt_refresh_token_required,get_jwt_identity, get_raw_jwt) -auth = HTTPBasicAuth #parsing incoming data parser = reqparse.RequestParser() @@ -44,7 +42,7 @@ def post(self): if current_user is None: pass - elif current_user[0]==username: + elif current_user[1]==username: return{"message":"user {} already exist".format(username)} try: @@ -71,7 +69,7 @@ class UserLogin(Resource): #login user def post(self): - self.data = parser.parse_args() + self.data = request.get_json(force=True) username = self.data['username'] password = self.data['password'] @@ -81,7 +79,7 @@ def post(self): if current_user is None: return {"message": "user {} doesn\'t exist".format(username)} - if verify_hash(password, current_user[1]): + if verify_hash(password, current_user[2]): access_token = create_access_token(identity=username) refresh_token = create_refresh_token(identity=username) return { diff --git a/resources/models.py b/resources/models.py index 3f6ab76..3cc4e40 100644 --- a/resources/models.py +++ b/resources/models.py @@ -37,7 +37,7 @@ def insert_to_db(self, username, password, firstname, lastname, role, created_on return user_id def find_by_username(username): - query = """SELECT username,password FROM tb_users WHERE username=(%s)""" + query = """SELECT user_id,username,password FROM tb_users WHERE username=(%s)""" conn = None result = None @@ -82,7 +82,7 @@ def return_all(): except (Exception, psycopg2.DatabaseError) as error: - print (error) + return str(error) finally: if conn is not None: conn.close() @@ -98,5 +98,179 @@ def verify_hash(password, hash): #check the given pass return sha256.verify(password, hash) +def is_admin(username): + #check if user is admin + query = """SELECT username from tb_users WHERE username=(%s) AND role=True""" + + conn = None + result = None + try: + conn = psycopg2.connect(DATABASE_URL()) + + cur = conn.cursor() + + cur.execute(query, (username,)) + + result = cur.fetchone() + + cur.close() + + if result is None or result == "": + return False + + except (Exception, psycopg2.DatabaseError) as error: + return "iko shida " + str(error) + + finally: + if conn is not None: + conn.close() + + return True + +def get_id(username): + pass + class RevokedTokenModel(object): - pass \ No newline at end of file + pass + +class RequestModel(object): + def fetch_all_request(): + """get all request""" + query = """select array_to_json(array_agg(row_to_json(t))) from ( + select * from tb_request) t""" + + conn = None + results = None + try: + conn=psycopg2.connect(DATABASE_URL()) + cur = conn.cursor() + + cur.execute(query) + results = cur.fetchall() + + cur.close() + + except (Exception, psycopg2.DatabaseError) as error: + return error + finally: + if conn is not None: + conn.close() + + return results + + def fetch_for_logged_in_user(requestor): + """get all request for logged in user""" + query = """select array_to_json(array_agg(row_to_json(t))) from ( + select * from tb_request WHERE requestor=(%s)) t""" + + conn = None + results = None + try: + conn=psycopg2.connect(DATABASE_URL()) + cur = conn.cursor() + + cur.execute(query,(requestor,)) + results = cur.fetchall() + + cur.close() + + except (Exception, psycopg2.DatabaseError) as error: + return error + finally: + if conn is not None: + conn.close() + + return results + + def fetch_request_by_id(self, request_id): + """get a request for a logged in user""" + query = """select row_to_json(tb_request) from tb_request WHERE request_id=(%s)""" + + conn = None + results = None + try: + conn=psycopg2.connect(DATABASE_URL()) + cur = conn.cursor() + + cur.execute(query,(request_id,)) + results = cur.fetchall() + + cur.close() + + except (Exception, psycopg2.DatabaseError) as error: + return error + finally: + if conn is not None: + conn.close() + + return results + + + def create_request(self, requestor,request_type,status,description,created_on): + """create a request""" + sql = """INSERT into tb_request (requestor,request_type,status,description,created_on) + VALUES(%s,%s,%s,%s,%s)""" + conn = None + + try: + conn = psycopg2.connect(DATABASE_URL()) + cur = conn.cursor() + + cur.execute(sql, (requestor,request_type,status,description,created_on,)) + + conn.commit() + cur.close() + + except (Exception, psycopg2.DatabaseError) as error: + return error + finally: + if conn is not None: + conn.close() + return "Data saved succesfully" + + def modify_request(request_type,description,last_modified,request_id): + """Edit or modify a request""" + query = """UPDATE tb_request SET request_type=%s,description=%s, + last_modified=%s WHERE request_id=%s;""" + + conn = None + user_id = None + try: + #params = dbconfig(filename, section) + conn = psycopg2.connect(DATABASE_URL()) + + cur = conn.cursor() + cur.execute(query,(request_type,description,last_modified,request_id,)) + + + conn.commit() + cur.close() + except (Exception, psycopg2.DatabaseError) as error: + return error + finally: + if conn is not None: + conn.close() + return user_id + + def request_action(self, status, last_modified, request_id): + #PUT /request//approve + sql = """UPDATE tb_request SET status=%s, last_modified=%s WHERE request_id=%s""" + + conn = None + try: + conn = psycopg2.connect(DATABASE_URL()) + cur = conn.cursor() + cur.execute(sql,(status,last_modified, request_id,)) + + + conn.commit() + cur.close() + + + except (Exception, psycopg2.DatabaseError) as error: + return error + + finally: + if conn is not None: + conn.close() + \ No newline at end of file diff --git a/resources/requests.py b/resources/requests.py index c3ff6ac..6bfb1d2 100644 --- a/resources/requests.py +++ b/resources/requests.py @@ -1,45 +1,168 @@ +import datetime + from flask_restful import Resource, reqparse from flask import json, request, jsonify -from models import dtrequest +from resources.models import RequestModel, is_admin, find_by_username from flask_jwt_extended import (create_access_token,create_refresh_token, jwt_required, jwt_refresh_token_required,get_jwt_identity, get_raw_jwt) +#set current user + + +RM = RequestModel + +parser = reqparse.RequestParser() +parser.add_argument('requestor',help='fill user id', required=True) +parser.add_argument('request_type',help='please fill in request_type', required=True) +parser.add_argument('status',help='request status', required=False) +parser.add_argument('description',help='please fill in descritption', required=True) + class RequestResource(Resource): """Get all request""" @jwt_required def get(self): - #to set in utils - current_user = ["anto@gmail.com"] - res = [d for d in dtrequest if d["email"] in current_user] - return res + + current_user = get_jwt_identity() + user_id = find_by_username(current_user)[0] + check_admin = is_admin(current_user) + if check_admin is True: + """returns all request""" + return RM.fetch_all_request() + return {current_user:RM.fetch_for_logged_in_user(user_id)} - """create new request""" + @jwt_required def post(self): - json_data = request.get_json(force=True) - if not json_data: - return {'message': 'No input data provided'}, 400 - elif (len(json_data)!=len(dtrequest[0])): - return "Please enter all details" - dtrequest.append(json_data) - return {"status":"success", "data": json_data }, 201 + """create new request""" + self.data = parser.parse_args() + + requestor = self.data['requestor'] + request_type = self.data['request_type'] + status = self.data['status'] + description = self.data['description'] + created_on = datetime.datetime.now() + + try: + save = RequestModel.create_request(self,requestor,request_type,status,description,created_on) + + return {"status":str(save), "data": request_type }, 201 + + except: + return {"msg":"Failed to create new request"} + + #return {"status":"success", "data": self.data }, 201 class Request(Resource): """Get request by ID""" + @jwt_required def get(self, req_id): - for _request in dtrequest: - if (req_id == _request['id']): - return _request, 200 - return "request not found", 404 + response = RM.fetch_request_by_id(self, req_id)[0][0] + current_user = get_jwt_identity() + user_id = find_by_username(current_user)[0] + + if user_id == response['requestor']: + return response + return {"msg": "You have insufficient rights to view this"} - """Modify a request""" + @jwt_required def put(self, req_id): + """Modify a request""" json_data = request.get_json(force=True) - for _request in dtrequest: - if (req_id == _request['id']): - _request.update(json_data) - return {"status":"success", "data": json_data }, 201 - return "Request not found", 404 \ No newline at end of file + request_type=json_data['request_type'] + description=json_data['description'] + last_modified=datetime.datetime.now() + request_id = req_id + + try: + RM.modify_request(request_type,description,last_modified,request_id) + + return {"message":"Record updated succesfully"} + except: + return {"message":"failed to update request"} + + def delete(self): + pass + +class GetAllRequest(Resource): + """Fetch all request Admin only""" + @jwt_required + def get(self): + current_user = get_jwt_identity() + check_admin = is_admin(current_user) + + if check_admin is True: + return RM.fetch_all_request()[0][0] + return {"message":"you dont have sufficient rights to access this"} + +class ApproveRequest(Resource): + """Approve user request""" + @jwt_required + def put(self, req_id): + """Modify a request""" + json_data = request.get_json(force=True) + status=json_data['status'] + last_modified=datetime.datetime.now() + request_id = req_id + + current_user = get_jwt_identity() + check_admin = is_admin(current_user) + + if check_admin is True: + try: + RM.request_action(self, status,last_modified,request_id) + + return {"message":"request {} {}".format(request_id, status)} + except: + return {"message":"failed to approve request"} + + return {"message":"you dont have sufficient rights to access this"} + +class DisapproveRequest(Resource): + """Dissapprove user request""" + @jwt_required + def put(self, req_id): + """Modify a request""" + json_data = request.get_json(force=True) + status=json_data['status'] + last_modified=datetime.datetime.now() + request_id = req_id + + current_user = get_jwt_identity() + check_admin = is_admin(current_user) + + if check_admin is True: + try: + RM.request_action(self, status,last_modified,request_id) + + return {"message":"request {} {}".format(request_id, status)} + except: + return {"message":"failed to approve request"} + + return {"message":"you dont have sufficient rights to access this"} + +class ResolveRequest(Resource): + """Resolve user request""" + @jwt_required + def put(self, req_id): + """Modify a request""" + json_data = request.get_json(force=True) + status=json_data['status'] + last_modified=datetime.datetime.now() + request_id = req_id + + current_user = get_jwt_identity() + check_admin = is_admin(current_user) + + if check_admin is True: + try: + + RM.request_action(self, status,last_modified,request_id) + + return {"message":"request {} {}".format(request_id, status)} + except: + return {"message":"failed to approve request"} + + return {"message":"you dont have sufficient rights to access this"} \ No newline at end of file diff --git a/resources/user.py b/resources/user.py index c39a05c..ae63d75 100644 --- a/resources/user.py +++ b/resources/user.py @@ -1,8 +1,9 @@ +""" from flask import Flask, jsonify, request, abort, g from flask_restful import Api,Resource, reqparse from flask_httpauth import HTTPBasicAuth from passlib.apps import custom_app_context as pass_context -from models import dtlogin, dtusers + from flask_jwt_extended import (create_access_token,create_refresh_token, jwt_required, jwt_refresh_token_required,get_jwt_identity, get_raw_jwt) @@ -14,11 +15,11 @@ parser.add_argument('username', help = 'Please fill in the username', required = True) parser.add_argument('password', help= 'This field cannot be blank', required = True) class UserResource(Resource): - """get all registered users""" + #get all registered users def get(self): return dtusers, 200 - """create new user""" + #create new user def post(self): #json_data = request.get_json(force=True) data = parser.parse_args() @@ -42,14 +43,14 @@ def post(self): class User(Resource): - """get user by id""" + #get user by id def get(self, uid): for user in dtusers: if (uid== user['id']): return user, 200 return "No record found", 404 - """Modify / update an existing user""" + #Modify / update an existing user def put(self, uid): json_data = request.get_json(force=True) for user in dtusers: @@ -58,10 +59,11 @@ def put(self, uid): return {"status":"success", "data": json_data }, 201 return "Request not found", 404 - """Delete user""" + #Delete user def delete(self, uid): for user in dtusers: if (uid == user['id']): dtusers[:]=[user for user in dtusers if not(uid == user.get('id'))] return {"status":"Deleted successfuly", "data": user}, 201 return "Record not found", 404 +""" \ No newline at end of file diff --git a/run.py b/run.py index 3614166..ea1a325 100644 --- a/run.py +++ b/run.py @@ -3,7 +3,7 @@ from config import app_config from flask_jwt_extended import JWTManager -config_name = os.getenv('APP_SETTINGS') +config_name = 'testing'#os.getenv('APP_SETTINGS') def create_app(config_name): app = Flask(__name__) diff --git a/tests/test_auth.py b/tests/test_auth.py index cca181c..e9b9906 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -15,9 +15,11 @@ class AuthTest(unittest.TestCase): def setUp(self): self.app = create_app(config_name="testing") self.client = self.app.test_client - self.reg = { "username": "susan@gmail.com", "password": "test", "firstname": "susan", - "lastname": "Wekesa" } - self.login = {"username":"anto@gmail.com","password":"test"} + self.reg = { "username": "anto@gmail.com", "password": "test", "firstname": "antony", + "lastname": "okilipa","role":"yes" } + self.login_data = { "username": "anto@gmail.com", + "password": "test" + } #with self.app.app_context(): @@ -40,12 +42,26 @@ def test_registration_endpoint(self): """Test signup/register users endpoint""" res = self.client().post('/api/v1/auth/signup', data = self.reg) self.assertEquals(res.status_code, 200) - #self.assertIn('mary', str(res.data)) - + self.assertIn('anto@gmail.com', str(res.data)) + def test_login_endpoint(self): """Test login endpoint""" - res = self.client().post('/api/v1/auth/login', data = self.login) + res = self.client().post('/api/v1/auth/login', + data = json.dumps(dict({ + "username": "anto@gmail.com", + "password": "test" + }))) self.assertEquals(res.status_code,200) - - \ No newline at end of file + self.assertIn('anto@gmail.com',str(res.data)) + + def test_logout_access(self): + pass + + def test_logout_refresh(self): + res = self.client().post('/api/v1/auth/logout/refresh') + self.assertEquals(res.status_code, 200) + + def test_token_refresh(self): + res = self.client().post('/api/v1/auth/token/refresh') + self.assertEquals(res.status_code, 200) \ No newline at end of file diff --git a/tests/test_requests.py b/tests/test_requests.py index cb91081..4e1215e 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -13,10 +13,7 @@ import os import pytest -from flask_restful import Api -from resources.requests import dtrequest, RequestResource, Request from run import create_app -from app import api_bp @pytest.mark.unittest @@ -27,10 +24,29 @@ def setUp(self): #Declare test variables and initialize app self.app = create_app('testing') self.client = self.app.test_client - self.req = { "id": 5, "requestor":"Test Doe", "email": "john@gmail.com", - "type": "maintenance", "status":"Approved", "desc": "Description goes here"} - - + self.req ={ + "requestor":1, + "request_type": "Repair", + "description": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quasi ipsam possimus cumque libero ipsa vero odio.", + "status":"Pending" + } + def signup(self): + user_details ={ + 'username': "anto@mail.com", + 'password': "test", + 'firstname': "anto", + 'lastname': "Doe", + 'role': "t" + } + return self.client().post('/api/v1/auth/signup', data=user_details) + + def login(self): + login_details = { + "username":"anto@mail.com", + "password":"test" + } + return self.client().post('/api/v1/auth/login', + data=json.dumps(dict(login_details))) def tearDown(self): pass @@ -40,32 +56,55 @@ def tearDown(self): def test_api_can_get_all_requests(self): """Test api Get all the requests for a logged in user""" - response = self.client().get('/api/v1/user/request') + self.signup() + res = self.login() + access_token = json.loads(res.data.decode())['access_token'] + response = self.client().get('/api/v1/users/requests', + headers=dict(Authorization="Bearer "+ access_token)) self.assertTrue(response.status_code, 200) + def test_api_can_get_request_by_id(self): """Test api can get a request for a logged in user""" - res = self.client().get('/api/v1/user/request/1') + self.signup() + res = self.login() + access_token = json.loads(res.data.decode())['access_token'] + res = self.client().get('/api/v1/users/requests/1', + headers=dict(Authorization="Bearer "+ access_token)) self.assertEquals(res.status_code, 200) def test_api_request_can_be_modified(self): #Test api can modify a request - rv = self.client().post('/api/v1/user/request/', - data = json.dumps(dict({"requestor":"sue doe"}))) - self.assertEquals(rv.status_code, 200) + self.signup() + res = self.login() + + access_token = json.loads(res.data.decode())['access_token'] - res = self.client().put('/api/v1/user/request/1', - data = json.dumps(dict({"requestor":"Susan Sue"}))) - self.assertEquals(rv.status_code, 200) - self.assertIn('Susan Sue', str(res.data)) + rv = self.client().post('/api/v1/users/requests/', + headers=dict(Authorization="Bearer "+ access_token), + data = self.req) + self.assertEquals(rv.status_code, 201) + + res = self.client().put('/api/v1/users/requests/1', + headers=dict(Authorization="Bearer "+ access_token), + data = json.dumps(dict({"request_type":"repair", "description":"This is an updated description"}))) + self.assertEquals(rv.status_code, 201) + self.assertIn('Record updated succesfully', str(res.data)) def test_api_can_create_request(self): """Test api can create a request""" - res = self.client().post('/api/v1/user/request/', data = json.dumps(dict(self.req))) + self.signup() + result = self.login() + access_token = json.loads(result.data.decode())['access_token'] + + res = self.client().post( + '/api/v1/users/requests/', + headers=dict(Authorization="Bearer " + access_token), + data = self.req) self.assertEquals(res.status_code, 201) - self.assertIn('Test Doe', str(res.data)) + self.assertIn('Data saved succesfully', str(res.data)) #Make tests executable diff --git a/tests/test_users.py b/tests/test_users.py index 8140521..af2ea07 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -5,7 +5,6 @@ from config import TestingConfig from run import create_app -from resources.user import User, UserResource from flask import request, jsonify @pytest.mark.unittest @@ -28,27 +27,14 @@ def test_api_can_get_all_users(self): def test_api_can_get_users_by_id(self): """Test api can get a users by id""" - rv = self.client().post('/api/v1/user/', - data = self.req) - - res = self.client().get('/api/v1/user/3') - self.assertEquals(res.status_code, 200) + pass def test_api_users_can_be_modified(self): #Test api can modify a users - - res = self.client().put('/api/v1/user/3', - data = json.dumps(dict(self.modified))) - self.assertEquals(res.status_code, 201) - self.assertIn('susansue@gmail.com', str(res.data)) - + pass def test_api_can_create_users(self): """Test api can create a users""" - res = self.client().post('/api/v1/user/', data = self.req) - self.assertEquals(res.status_code, 200) - self.assertIn('mary', str(res.data)) - + pass def test_api_can_delete_user(self): - res = self.client().delete('/api/v1/user/1') - self.assertEquals(res.status_code, 201) \ No newline at end of file + pass \ No newline at end of file