Esempio n. 1
0
def create_user(userRepository: UserRepository):
    abort_if_body_not_found()

    body = request.json
    new_user = User(body['user_id'], body['name'], ratings=[])
    userRepository.add_user(new_user)
    return jsonify({new_user.user_id: new_user})
Esempio n. 2
0
def create_rating(userRepository: UserRepository):
    abort_if_body_not_found()

    body = request.json
    new_rating = UserRating(str(uuid.uuid1()), body['user_id'],
                            body['domain_id'], body['rating'])
    userRepository.add_rating(new_rating)
    return jsonify({new_rating.rating_id: new_rating})
 def test_create_user(self):
     self.user_repository = UserRepository(
         storage_adapter=self.adapter_name)
     result = self.user_repository.bulk_create(
         users=self.fake_users).get_response()
     self.assertTrue(result['data']["status"])
     self.assertEqual(result["status_code"], 201)
     data = {
         'status': True,
         'users_phones': ['+201111111111', '+202222222222']
     }
     self.assertDictEqual(result['data'], data)
Esempio n. 4
0
class GroupRepository(IBaseRepository):
    def __init__(self, storage_adapter):
        super().__init__(storage_name=storage_adapter)
        self.user_repository_dep = UserRepository(
            storage_adapter=storage_adapter,
            storage_context=self.storage_context)

    def create(self, group_instance, *args, **kwargs):
        result = ObjectResponse()
        if not self.storage_adapter:
            result.cls_exception = ExceptionFactory.get_exception(
                FailedConnection, 503, "Failed to get storage adapter")
            return result

        group_data = self.get_instance_dict(group_instance)
        response = self.user_repository_dep.bulk_create(users=group_data)
        group_data["users"] = response.users_phones
        group = self.storage_adapter.insert(
            doc_data=group_data, collection=settings.GROUPS_COLLECTION_NAME)
        result.response = {
            'data': {
                'status': True,
                'group_id': str(group.inserted_id)
            },
            'status_code': 201
        }
        return result

    def bulk_create(self, *args, **kwargs):
        pass
class TestUpdateFCMTokenRequest(unittest.TestCase):
    def setUp(self):
        self.fake_request = {"fcm_token": "FCM TOKEN GENERATED"}
        self.user_repository = None
        self.adapter_name = "MongoDB"

    def test_update_user(self):
        self.user_repository = UserRepository(storage_adapter=self.adapter_name)
        filters = {"phone": "+201111111111"}
        result = self.user_repository.update(new_data=self.fake_request, filters=filters).get_response()
        self.assertTrue(result['data']["updated"])
        self.assertEqual(result["status_code"], 200)
class TestCreateUserRequest(unittest.TestCase):
    def setUp(self):
        self.fake_users = UserBulkDataModel(users=[
            UserDataModel(
                name="Test Users 1", phone="+201111111111", fcm_token=""),
            UserDataModel(
                name="Test Users 2", phone="+202222222222", fcm_token=""),
        ])
        self.user_repository = None
        self.adapter_name = "MongoDB"

    def test_create_user(self):
        self.user_repository = UserRepository(
            storage_adapter=self.adapter_name)
        result = self.user_repository.bulk_create(
            users=self.fake_users).get_response()
        self.assertTrue(result['data']["status"])
        self.assertEqual(result["status_code"], 201)
        data = {
            'status': True,
            'users_phones': ['+201111111111', '+202222222222']
        }
        self.assertDictEqual(result['data'], data)
Esempio n. 7
0
def create(users: UserBulkDataModel):
    user_repository = UserRepository(
        storage_adapter=settings.MONGO_ADAPTER_NAME)
    result = user_repository.bulk_create(users).get_response()
    return Response(json.dumps(result["data"]), result["status_code"])
Esempio n. 8
0
 def __init__(self):
     self.__userRepository = UserRepository()
Esempio n. 9
0
class UserService(object):
    def __init__(self):
        self.__userRepository = UserRepository()

    def register(self, email, password, username):
        """
        Register the user
        :param email:
        :param password:
        :param username:
        :return string:
        """
        user = self.__userRepository.get_by_id(email)
        if not user:
            try:
                new_user = User(email, username, bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode("utf-8"))
                added_user = self.__userRepository.add(new_user)
                auth_token = added_user.encode_auth_token()
                response_object = {
                    'status': 'success',
                    'message': 'Successfully registered.',
                    'auth_token': auth_token.decode()
                }
                return json.dumps(response_object)
            except Exception as e:
                response_object = {
                    'status': 'fail',
                    'message': 'Some error occurred. Please try again.'
                }
                return json.dumps(response_object)
        else:
            response_object = {
                'status': 'fail',
                'message': 'User already exists. Please Log in.',
            }
            return json.dumps(response_object)

    def login(self, email, password):
        try:
            user = self.__userRepository.get_by_id(email)
            user = User(user['email'], user['username'], user['password'])
            if user and bcrypt.checkpw(password.encode(), user.password.encode()):
                auth_token = user.encode_auth_token()
                response_object = {
                    'status': 'success',
                    'message': 'Successfully logged in.',
                    'auth_token': auth_token.decode()
                }
                return json.dumps(response_object)
            else:
                response_object = {
                    'status': 'fail',
                    'message': 'User does not exist.'
                }
                return json.dumps(response_object)
        except Exception as e:
            print(e)
            response_object = {
                'status': 'fail',
                'message': 'Try again'
            }
            return json.dumps(response_object)

    def get_user_details(self, auth_header):
        if auth_header:
            auth_token = auth_header.split(" ")[1]
        else:
            auth_token = ''
        if auth_token:
            resp = User.decode_auth_token(auth_token)
            if not isinstance(resp, str):
                user = self.__userRepository.get_by_id(resp)  # resp==email==id
                response_object = {  # the user-object details go in here
                    'status': 'success',
                    'data': {
                        'email': user.email,
                        'username': user.username
                    }
                }
                return json.dumps(response_object)
            response_object = {
                'status': 'fail',
                'message': resp
            }
            return json.dumps(response_object)
        else:
            response_object = {
                'status': 'fail',
                'message': 'Provide a valid auth token.'
            }
            return json.dumps(response_object)
 def test_update_user(self):
     self.user_repository = UserRepository(storage_adapter=self.adapter_name)
     filters = {"phone": "+201111111111"}
     result = self.user_repository.update(new_data=self.fake_request, filters=filters).get_response()
     self.assertTrue(result['data']["updated"])
     self.assertEqual(result["status_code"], 200)
Esempio n. 11
0
def update_user_fcm_token(user: UserUpdateDataModel):
    user_repository = UserRepository(storage_adapter=settings.MONGO_ADAPTER_NAME)
    new_data = {"fcm_token": user.fcm_token}
    filters = {"phone": user.phone}
    result = user_repository.update(new_data=new_data, filters=filters).get_response()
    return Response(json.dumps(result["data"]), result["status_code"])
Esempio n. 12
0
def get_user(userRepository: UserRepository, user_id):
    return jsonify(userRepository.get_user(user_id))
Esempio n. 13
0
 def __init__(self, storage_adapter):
     super().__init__(storage_name=storage_adapter)
     self.user_repository_dep = UserRepository(
         storage_adapter=storage_adapter,
         storage_context=self.storage_context)