Exemplo n.º 1
0
    def test_addcountry(self):
        # first login as admin

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        adminToken = data['data']['token']

        # add new country
        headers = {'token': adminToken}
        data = {
            'name': 'usa',
            'phone_code': 1,
            'phone_length': 10,
            'iso_name': 'USA'
        }

        result = self.client_app.post("/api/addcountry", data=json.dumps(data),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(data['message'], None)
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        country = getCountry(name='usa')
        self.assertTrue(country, 'no country')
        self.assertEqual(country.name, 'usa', 'no country')
        self.assertEqual(country.phone_code, 1, 'no country')
        self.assertEqual(country.iso_name, 'USA', 'no country')
Exemplo n.º 2
0
    def test_addUser3(self):
        """ login with admin then add user withot the defulat values"""

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        resultAdmin = self.client_app.post("/api/login",
                                           data=json.dumps(data),
                                           content_type='application/json')

        data = json.loads(resultAdmin.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(resultAdmin.content_type, 'application/json')
        self.assertEqual(resultAdmin.status_code, 200)

        # add user

        # the user country
        country = getCountry(phoneCode=249)

        userData = {'name':'mustafa', 'phone':'0123456789', 'password':'******',\
            'status':'active', 'permission':'user', 'country_id':country.id}

        headers = {'token': data['data']['token']}
        result = self.client_app.post("/api/adduser", data=json.dumps(userData),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(data['message'], None)
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)
Exemplo n.º 3
0
    def test_login2(self):
        """ test the login route with wrong password"""
        admin_phone = os.getenv('admin_phone')

        if not admin_phone:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': '******',
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')

        self.assertTrue(data['message'], 'wrong phone or password')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 202)
Exemplo n.º 4
0
    def test_registerUser3(self):
        ''' regster user - invalid phone number'''

        # the user country
        country = getCountry(phoneCode=249)

        data = {
            'phone': '00929596047',
            'password': '******',
            'country_id': country.id,
            'name': 'mustafa'
        }

        # post requset
        result = self.client_app.post("/api/registeruser",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'],
                         'phone number not pass the validation')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 400)
Exemplo n.º 5
0
    def test_login(self):
        """ test the login route with admin"""
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 6
0
    def test_checkLogin(self):
        ''' tests the 'checklogin' route '''

        # post request
        result = self.client_app.post("/api/checklogin",
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertNotEqual(data['status'], 'success')
        self.assertNotEqual(result.status_code, 200)

        # now login
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post request
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertTrue(data['data']['token'], 'no token returned')

        token = data['data']['token']
        headers = {'token': token}

        # check login again
        result = self.client_app.post("/api/checklogin",
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        # new user token
        token = data['data'].get('token')
        self.assertTrue(token, 'no new token returned')
Exemplo n.º 7
0
    def test_getfeedback(self):
        ''' tests the getfeedback Route'''

        # first add feedback

        text = "this app is very awesome, thank you for your hard work"

        data = {"feedback": text}

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)

        # now get it

        # first login with admin
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        # get the token
        token = data['data']['token']
        headers = {'token': token}

        result = self.client_app.post("/api/getfeedback",
                                      data=json.dumps({}),
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(len(data['data']['feedback']), 1)
        self.assertEqual(result.status_code, 200)
Exemplo n.º 8
0
    def test_update2(self):
        # update the user data - update the password

        # first log-in with admin
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # update the admin data
        token = data['data']['token']
        headers = {"token": token}

        data = {"password": admin_password, "newpassword": "******"}

        # put requset
        result = self.client_app.put("/api/modifyuser",
                                     data=json.dumps(data),
                                     headers=headers,
                                     content_type='application/json')

        data = json.loads(result.data.decode())
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # check the new name in the database
        user = Users.query.filter_by(phone=admin_phone).first()

        self.assertTrue(user, "update admin name failed")
        self.assertEqual(user.phone, admin_phone, "admin phone don't match")
Exemplo n.º 9
0
    def test_forgotPassword(self):
        ''' tests the forgotPassword route'''

        # the user country
        country = getCountry(phoneCode=20)
        admin_phone = os.getenv('admin_phone')

        data = {'phone': admin_phone, 'country_id': country.id}

        # post requset
        result = self.client_app.post("/api/forgotpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # test with not found user

        country = getCountry(phoneCode=249)

        data = {'phone': '929596047', 'country_id': country.id}

        # post requset
        result = self.client_app.post("/api/forgotpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'], 'no user with this phone')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 202)
Exemplo n.º 10
0
    def test_addfeedback2(self):
        ''' add feedbak with logined user'''

        # login with admin
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        # get the token
        token = data['data']['token']
        headers = {'token': token}

        text = "this app is very awesome, thank you for your hard work"

        data = {"feedback": text}

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)

        # check the feedback in the database
        feedback = Feedback.query.all()

        self.assertTrue(feedback, 'no feedback added')
        self.assertEqual(len(feedback), 1, "wrong length of feedback numbers")

        # check admin id
        self.assertTrue(feedback[0].user_public_id, "no user id added")
Exemplo n.º 11
0
    def test_registerUser2(self):
        ''' regster user withot name'''

        # the user country
        country = getCountry(phoneCode=249)

        data = {
            'phone': '+249929596047',
            'password': '******',
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/registeruser",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)
Exemplo n.º 12
0
    def test_deletefeedback(self):
        ''' tests the deletefeedback route'''

        # add first
        text = "this app is very awesome, thank you for your hard work"

        data = {"feedback": text}

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)

        # check the feedback in the database
        feedback = Feedback.query.all()

        self.assertTrue(feedback, 'no feedback added')
        self.assertEqual(len(feedback), 1, "wrong length of feedback numbers")

        # login as admin

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        # get the token
        token = data['data']['token']
        headers = {'token': token}

        # get the feedback id
        result = self.client_app.post("/api/getfeedback",
                                      data=json.dumps({}),
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        feedbackId = data['data']['feedback'][0]['id']

        # delete the feedback
        data = {'feedbackid': feedbackId}
        result = self.client_app.delete("/api/deletefeedback",
                                        data=json.dumps(data),
                                        headers=headers,
                                        content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        # now check if its deleted
        result = self.client_app.post("/api/getfeedback",
                                      data=json.dumps({}),
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(len(data['data']['feedback']), 0)
        self.assertEqual(result.status_code, 200)
Exemplo n.º 13
0
    def test_updateoperationStatus(self):
        ''' tests the update operation status route'''

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        from app.models import Age
        age = Age.query.first()

        # add new operation
        headers = {'token': token}

        data = {
            'date': '2020-11-15',
            'type_id': 2,
            'country_id': 1,
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        result = self.client_app.get("/api/getoperation",
                                     data=data,
                                     content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        operation = data['data']['operations'][0]

        # now update status to closed
        data = {'status': 'closed', 'operationid': operation['id']}

        result = self.client_app.put("/api/updateoperationstatus", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 14
0
    def test_addoperation(self):
        """ add new operation"""

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        # add new operation
        headers = {'token': token}
        file_path = os.path.join(current_app.config['UPLOAD_FOLDER'],
                                 os.getenv('IMEGE_TEST_NAME'))

        # send 3 photos
        photos = []
        for _ in range(3):
            photos.append((open(file_path,
                                'rb'), os.getenv('IMEGE_TEST_NAME')))

        from app.models import Age
        age = Age.query.first()

        data = {
            'photos': photos,
            'date': '2020-11-15',
            'type_id': 2,
            'country_id': 1,
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        # close the files
        for file in photos:
            file[0].close()

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # the person get added
        person = getPerson()

        self.assertTrue(person[0])

        photos = getPohto(object=person[0])

        self.assertTrue(photos)
        self.assertEqual(len(photos), 3)

        # delete person to get rid of the photos
        deletePerson(id=person[0].id)

        # no photos after delete
        self.assertEqual(len(getPohto()), 0, 'photos not deleted')

        # get new token with auto generate and then try add new operation
        #

        headers = {'token': token}

        # check login again - generate token
        result = self.client_app.post("/api/checklogin",
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        # new user token
        newtoken = data['data'].get('token')
        self.assertTrue(token, 'no new token returned')
        headers = {'token': newtoken}

        # now add new operation
        #
        data = {
            'date': '2020-11-15',
            'type_id': 2,
            'country_id': 1,
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)
Exemplo n.º 15
0
    def test_resetPassword(self):
        ''' test the 'resetPassword' route '''

        # first requset a code with the admon phone

        # the user country
        country = getCountry(phoneCode=20)
        admin_phone = os.getenv('admin_phone')

        data = {'phone': admin_phone, 'country_id': country.id}

        # post requset
        result = self.client_app.post("/api/forgotpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the code from the database

        code = UserVerificationNumber.query.first()

        # now check with the resetPassword route (withot the new password)

        data = {
            'phone': admin_phone,
            'country_id': country.id,
            'code': code.code
        }
        # post requset
        result = self.client_app.post("/api/resetpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # now check with the resetPassword route (with the new password)

        data = {
            'phone': admin_phone,
            'country_id': country.id,
            'code': code.code,
            'password': '******'
        }

        # post requset
        result = self.client_app.post("/api/resetpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # now check agin - must failed becouse the code get deleted

        data = {
            'phone': admin_phone,
            'country_id': country.id,
            'code': code.code,
            'password': '******'
        }
        # post requset
        result = self.client_app.post("/api/resetpassword",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'], 'Invalid code.')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 202)
Exemplo n.º 16
0
    def test_addoperation2(self):
        """ add operations then get it """

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        from app.models import Age
        age = Age.query.first()

        # add new operation
        headers = {'token': token}

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # add new operation2
        headers = {'token': token}

        data = {
            'date': '2020-10-25',
            'type_id': 2,
            'country_id': '2',
            'object_type': 'Car',
            "brand": 'brand',
            "model": 'model',
            "plate_number_letters": "klj",
            "plate_number_numbers": "123",
            "car_type": "1"
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # get the operation
        data = {}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 2)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the operation wuth country id filter
        data = {'country_id': 1}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 1)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the operation with object=Peron filter
        data = {'object': "Person"}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 1)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the operation with object=Car filter
        data = {'object': "Car"}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 1)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the operation with wrong object filter
        data = {'object': "wrong"}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 0)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # get the operation with not exist data
        data = {'id': "4"}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 0)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 17
0
    def test_addoperation3(self):
        ''' add operation with full data then get it '''

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        # add new operation
        headers = {'token': token}

        lat = 48.856613
        lng = 2.352222

        from app.models import Age
        age = Age.query.first()

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Person',
            'person_name': 'mustafa',
            'age_id': age.id,
            'details': 'this long paragraph of details',
            'gender': 'male',
            'skin': 2,
            'shelter': True,
            'lat': lat,
            'lng': lng
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)

        # get the operation
        data = {}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data['data']['operations'])
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')

        self.assertEqual(data['data']['operations'][0]['details'],
                         'this long paragraph of details', 'no details')
        self.assertEqual(data['data']['operations'][0]['lat'], lat, 'no lat')
        self.assertEqual(data['data']['operations'][0]['lng'], lng, 'no lng')
        self.assertEqual(data['data']['operations'][0]['object']['skin'], 2,
                         'no skin')
        self.assertEqual(data['data']['operations'][0]['object']['shelter'],
                         True, 'no shelter')
        self.assertEqual(data['data']['operations'][0]['object']['age_id'],
                         age.id, 'not same age')
        self.assertEqual(data['data']['operations'][0]['user']['name'],
                         'admin', 'no user')

        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # try add with shelter is False or witout shelter
        #

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Person',
            'person_name': 'mustafa',
            'age_id': age.id,
            'details': 'this long paragraph of details',
            'gender': 'male',
            'skin': 2,
            'shelter': False,
            'lat': lat,
            'lng': lng
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)
        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Person',
            'person_name': 'mustafa',
            'age_id': age.id,
            'details': 'this long paragraph of details',
            'gender': 'male',
            'skin': 2,
            'lat': lat,
            'lng': lng
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)
Exemplo n.º 18
0
    def test_addoperation4(self):
        ''' add new user then add operation with it'''

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        resultAdmin = self.client_app.post("/api/login",
                                           data=json.dumps(data),
                                           content_type='application/json')

        data = json.loads(resultAdmin.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(resultAdmin.status_code, 200)

        # add user

        # the user country
        country = getCountry(phoneCode=249)

        userData = {'name':'mustafa', 'phone':'0123456789', 'password':'******',\
            'status':'active', 'permission':'user', 'country_id':country.id}

        headers = {'token': data['data']['token']}
        result = self.client_app.post("/api/adduser", data=json.dumps(userData),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertEqual(result.status_code, 201)

        # login with the new user
        data = {
            'phone': '0123456789',
            'password': '******',
            'country_id': country.id
        }
        resultAdmin = self.client_app.post("/api/login",
                                           data=json.dumps(data),
                                           content_type='application/json')

        data = json.loads(resultAdmin.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(resultAdmin.status_code, 200)

        token = data['data']['token']
        from app.models import Age
        age = Age.query.first()

        # try add operation with this user
        headers = {'token': token}

        data = {
            'date': '2020-11-15',
            'type_id': 2,
            'country_id': 1,
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)
Exemplo n.º 19
0
    def test_addcountry2(self):
        """ try add country without valid data"""
        # first login as admin

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        adminToken = data['data']['token']

        # add new country
        headers = {'token': adminToken}
        data = {}

        result = self.client_app.post("/api/addcountry", data=json.dumps(data),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'], 'required data not submitted')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 400)

        data = {'name': 'usa', 'phone_length': 10}

        result = self.client_app.post("/api/addcountry", data=json.dumps(data),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'], 'required data not submitted')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 400)

        # already exists

        data = {
            'name': 'sudan',
            'phone_code': 249,
            'phone_length': 9,
            'iso_name': 'SD'
        }

        result = self.client_app.post("/api/addcountry", data=json.dumps(data),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'failure')
        self.assertEqual(data['message'], 'Country already exists.')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 202)
Exemplo n.º 20
0
    def test_addoperation6(self):
        ''' add operation with full data then get it - with 'car' object'''

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        # add new operation
        headers = {'token': token}

        lat = 48.856613
        lng = 2.352222

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Car',
            'model': 'toyota',
            'car_type': '1',
            'brand': 'brand',
            'plate_number_letters': 'fds',
            'plate_number_numbers': '321',
            'details': 'this long paragraph of details',
            'lat': lat,
            'lng': lng,
            'city': 'giza',
            'state': 'cairo'
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 201)

        # get the operation
        data = {}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data['data']['operations'])
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')

        self.assertEqual(data['data']['operations'][0]['details'],
                         'this long paragraph of details', 'no details')
        self.assertEqual(data['data']['operations'][0]['lat'], lat, 'no lat')
        self.assertEqual(data['data']['operations'][0]['lng'], lng, 'no lng')
        self.assertEqual(data['data']['operations'][0]['city'], 'giza',
                         'not the same city')
        self.assertEqual(data['data']['operations'][0]['state'], 'cairo',
                         'not the same stete')
        self.assertEqual(data['data']['operations'][0]['object']['model'],
                         'toyota', 'no car model')
        self.assertEqual(data['data']['operations'][0]['object']['brand'],
                         'brand', 'not same brand')
        self.assertEqual(data['data']['operations'][0]['user']['name'],
                         'admin', 'no user')

        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 21
0
    def test_addoperation8(self):
        ''' add new operation with 'PersonalBelongings' object'''
        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']
        headers = {'token': token}

        # now add the operation
        #

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'PersonalBelongings',
            'personal_belongings_type': '1',
            'personal_belongings_subtype': '2'
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # try get the data
        #

        data = {'object': 'PersonalBelongings'}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data['data']['operations'])
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')

        self.assertEqual(
            data['data']['operations'][0]['object']
            ['personal_belongings_type'], 1)
        self.assertEqual(
            data['data']['operations'][0]['object']
            ['personal_belongings_subtype'], 2)

        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 22
0
    def test_deletefeedback2(self):
        ''' delete feedback with user id'''

        # login with admin
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        # get the token
        token = data['data']['token']
        headers = {'token': token}

        text = "this app is very awesome, thank you for your hard work"

        data = {"feedback": text}

        # add three feddbacks with admin

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      headers=headers,
                                      content_type='application/json')

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      headers=headers,
                                      content_type='application/json')

        result = self.client_app.post("/api/addfeedback",
                                      data=json.dumps(data),
                                      headers=headers,
                                      content_type='application/json')

        # make sure the feedback get added
        feedback = Feedback.query.all()
        self.assertEqual(len(feedback), 3, 'not rigth numbers of feedback')

        # get the admin public id
        admin = getUser(phone=admin_phone)

        # delete with admin id

        data = {'userid': admin.public_id}

        result = self.client_app.delete("/api/deletefeedback",
                                        data=json.dumps(data),
                                        headers=headers,
                                        content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        # now check if its deleted
        result = self.client_app.post("/api/getfeedback",
                                      data=json.dumps({}),
                                      headers=headers,
                                      content_type='application/json')

        data = json.loads(result.data.decode())
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(len(data['data']['feedback']), 0)
        self.assertEqual(result.status_code, 200)
Exemplo n.º 23
0
    def test_addoperation7(self):
        ''' add new operation with Accident object'''
        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']
        headers = {'token': token}

        from app.models import Age
        age = Age.query.first()

        # now add the operation
        # the cars and the persons must be a json string
        cars = [{
            'model': 'toyota',
            'car_type': '1',
            'brand': 'brand',
            'plate_number_letters': 'fds',
            'plate_number_numbers': '321'
        }, {
            'model': 'toyota',
            'car_type': '1',
            'brand': 'brand',
            'plate_number_letters': 'fdrs',
            'plate_number_numbers': '3241'
        }]
        persons = [{
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }, {
            'person_name': 'mustafa2',
            'gender': 'male',
            'age_id': age.id
        }]

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Accident',
            'cars': json.dumps(cars),
            'persons': json.dumps(persons),
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # try get the data
        #

        data = {'object': 'Accident'}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data['data']['operations'])
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')

        self.assertEqual(len(data['data']['operations'][0]['object']['cars']),
                         2)
        self.assertEqual(
            len(data['data']['operations'][0]['object']['persons']), 2)

        self.assertEqual(
            data['data']['operations'][0]['object']['cars'][0]['model'],
            'toyota', 'no car model')
        self.assertEqual(
            data['data']['operations'][0]['object']['cars'][0]
            ['plate_number_numbers'], '321')
        self.assertEqual(
            data['data']['operations'][0]['object']['cars'][1]['brand'],
            'brand', 'not same brand')
        self.assertEqual(
            data['data']['operations'][0]['object']['cars'][1]
            ['plate_number_numbers'], '3241')

        self.assertEqual(
            data['data']['operations'][0]['object']['persons'][0]['name'],
            'mustafa')
        self.assertEqual(
            data['data']['operations'][0]['object']['persons'][1]['name'],
            'mustafa2')

        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)
Exemplo n.º 24
0
    def test_addUser2(self):
        """ login with admin then add user , then try add user with normal user"""

        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        if not admin_phone or not admin_password:
            raise ValueError('Environment variables not found!')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        # post requset
        resultAdmin = self.client_app.post("/api/login",
                                           data=json.dumps(data),
                                           content_type='application/json')

        data = json.loads(resultAdmin.data.decode())

        self.assertEqual(data['status'], 'success')

        self.assertTrue(data['data']['token'], 'no token returned')
        self.assertEqual(resultAdmin.content_type, 'application/json')
        self.assertEqual(resultAdmin.status_code, 200)

        # add user

        # the user country
        country = getCountry(phoneCode=249)

        userData = {'name':'mustafa', 'phone':'0123456789', 'password':'******',\
            'status':'active', 'permission':'user', 'country_id':country.id}

        headers = {'token': data['data']['token']}
        result = self.client_app.post("/api/adduser", data=json.dumps(userData),\
                headers=headers,content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(data['message'], None)
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # try add user with the new user

        # login
        normalUserData = {
            'phone': '0123456789',
            'password': '******',
            'country_id': country.id
        }
        noremalUserResult = self.client_app.post(
            "/api/login",
            data=json.dumps(normalUserData),
            content_type='application/json')

        normalUser = json.loads(noremalUserResult.data.decode())

        normalUserToken = normalUser['data']['token']

        self.assertEqual(normalUser['status'], 'success')
        self.assertTrue(normalUserToken, 'no token returned')
        self.assertEqual(noremalUserResult.content_type, 'application/json')
        self.assertEqual(noremalUserResult.status_code, 200)

        # add user

        testUserData = {'name':'test', 'phone':'0123456789', 'password':'******',\
            'status':'active', 'permission':'user'}

        headers = {'token': normalUserToken}
        result = self.client_app.post("/api/adduser", data=json.dumps(testUserData),\
                headers=headers,content_type='application/json')

        testData = json.loads(result.data.decode())

        self.assertEqual(testData['status'], 'failure')
        self.assertEqual(testData['message'], "You don't have the permission.")
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 401)
Exemplo n.º 25
0
    def test_addcomment(self):
        ''' test add comments on operation '''

        # first add the operation
        #

        # first log-in
        admin_phone = os.getenv('admin_phone')
        admin_password = os.getenv('admin_pass')

        # the user country
        country = getCountry(phoneCode=20)

        data = {
            'phone': admin_phone,
            'password': admin_password,
            'country_id': country.id
        }

        result = self.client_app.post("/api/login",
                                      data=json.dumps(data),
                                      content_type='application/json')

        data = json.loads(result.data.decode())

        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.status_code, 200)

        token = data['data']['token']

        from app.models import Age
        age = Age.query.first()

        # add new operation
        headers = {'token': token}

        data = {
            'date': '2020-11-15',
            'type_id': 1,
            'country_id': '1',
            'object_type': 'Person',
            'person_name': 'mustafa',
            'gender': 'male',
            'age_id': age.id
        }

        result = self.client_app.post("/api/addoperation", data=data, headers=headers,\
         content_type="multipart/form-data")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # get the operation data
        #

        data = {}

        result = self.client_app.get('/api/getoperation',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['operations']), 1)
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)

        # the operation id
        operationId = data['data']['operations'][0]['id']

        # now add the comment
        #

        data = {'operationid': operationId, 'text': 'this is the message body'}
        result = self.client_app.post("/api/sendcomment", data=json.dumps(data), headers=headers,\
         content_type="application/json")

        data = json.loads(result.data.decode())

        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 201)

        # now get the comments
        #
        data = {'operationid': operationId}
        result = self.client_app.get('/api/getcomment',
                                     query_string=data,
                                     content_type='application/json')
        data = json.loads(result.data.decode())

        self.assertTrue(data, 'no operations')
        self.assertEqual(len(data['data']['comments']), 1)
        self.assertEqual(data['data']['comments'][0]['text'],
                         'this is the message body')
        self.assertEqual(data['message'], None)
        self.assertEqual(data['status'], 'success')
        self.assertEqual(result.content_type, 'application/json')
        self.assertEqual(result.status_code, 200)