Ejemplo n.º 1
0
    def test_up_and_download_store_files(self):
        try:
            user_id = "77615"
            user = DbUser(id_=user_id, name='scott', password='******', first_name='Scott', last_name='Tiger',
                          phone='', email='', roles=['submit'])
            data_file_text = ("/begin_header\n"
                              "/received=20120330\n"
                              "/delimiter = comma\n"
                              "/north_latitude=42.598[DEG]\n"
                              "/east_longitude=-67.105[DEG]\n"
                              "/start_date=20101117\n"
                              "/end_date=20101117\n"
                              "/start_time=20:14:00[GMT]\n"
                              "/end_time=20:14:00[GMT]\n"
                              "/fields = station, SN, lat, lon, year, month, day, hour, minute, pressure, wt, sal, CHL, Epar, oxygen\n"
                              "/units = none, none, degrees, degrees, yyyy, mo, dd, hh, mn, dbar, degreesC, PSU, mg/m^3, uE/cm^2s, ml/L\n"
                              "/end_header\n"
                              "97,420,42.598,-67.105,2010,11,17,20,14,3,11.10,33.030,2.47,188,6.1\n")
            uploaded_file = UploadedFile("DEL1012_Station_097_CTD_Data.txt", "text", data_file_text.encode("utf-8"))

            result = upload_submission_files(ctx=self.ctx,
                                             path="test_files/cruise/experiment",
                                             submission_id="an_id",
                                             user_name=user_id,
                                             dataset_files=[uploaded_file],
                                             publication_date="2100-01-01",
                                             allow_publication=False,
                                             doc_files=[],
                                             store_user_path='Tom_Helge')
            self.assertEqual([], result["DEL1012_Station_097_CTD_Data.txt"].issues)
            self.assertEqual("OK", result["DEL1012_Station_097_CTD_Data.txt"].status)
        finally:
            self.delete_test_file("DEL1012_Station_097_CTD_Data.txt")
Ejemplo n.º 2
0
    def test_update_user(self):
        user = DbUser(id_='tt',
                      name='scott',
                      last_name='Scott',
                      password='******',
                      email='*****@*****.**',
                      first_name='Bruce',
                      roles=[Roles.SUBMIT.value, Roles.ADMIN.value],
                      phone='+34 5678901234')

        create_user(self.ctx, user)

        user.first_name = 'Tom'

        result = update_user(self.ctx, 'scott', data=user)
        self.assertIs(result, True)
Ejemplo n.º 3
0
    def update_user(self, user: DbUser):
        user_dict = user.to_dict()
        result = self._user_collection.replace_one({'name': user.name},
                                                   user_dict,
                                                   upsert=True)

        if not result:
            return False

        return True
Ejemplo n.º 4
0
    def get_user_by_id(self, user_id: str):
        obj_id = MongoDbDriver._obj_id(user_id)
        result = self._user_collection.find_one({'_id': obj_id})

        if not result:
            return None

        user_id = result["_id"]

        del result["_id"]
        result["id"] = str(user_id)

        return DbUser.from_dict(result)
Ejemplo n.º 5
0
    def put(self, user_name: str):
        """Provide API operation updateUser()."""

        # transform body with mime-type application/json into a User
        data_dict = tornado.escape.json_decode(self.request.body)
        data = DbUser.from_dict(data_dict)
        if not user_name:
            user_name = self.get_current_user()

        update_user(self.ws_context, user_name=user_name, data=data)
        self.finish(
            tornado.escape.json_encode(
                {'message': f'User {user_name} updated'}))
Ejemplo n.º 6
0
    def test_get_user_from_DB_wrong_password(self):
        ctx = new_test_service_context()

        user_stored = DbUser(id_='asodvia',
                             name='tom',
                             last_name='Scott',
                             password='******',
                             email='*****@*****.**',
                             first_name='Tom',
                             roles=[Roles.ADMIN.value],
                             phone='02102238958')
        ctx.db_driver.add_user(user_stored)

        user = ctx.get_user("tom", "incorrect_pwd")
        self.assertIsNone(user)
Ejemplo n.º 7
0
    def get_user(self, user_name: str, password: str = None):
        if password is None:
            result = self._user_collection.find_one({'name': user_name})
        else:
            result = self._user_collection.find_one({
                'name': user_name,
                'password': password
            })

        if not result:
            return None

        user_id = result["_id"]
        del result["_id"]
        result["id"] = str(user_id)

        return DbUser.from_dict(result)
Ejemplo n.º 8
0
    def test_get_user_admin_user_filled_db(self):
        ctx = new_test_service_context()

        user_stored = DbUser(id_='asodvia',
                             name='tom',
                             last_name='Scott',
                             password='******',
                             email='*****@*****.**',
                             first_name='Tom',
                             roles=[Roles.ADMIN.value],
                             phone='02102238958')
        ctx.db_driver.add_user(user_stored)

        user = ctx.get_user("chef")
        self.assertIsNotNone(user)

        user = ctx.get_user("chef", "eocdb_chef")
        self.assertIsNotNone(user)
Ejemplo n.º 9
0
    def put(self):
        """Provide API operation changeLoginUser()."""
        current_user = self.get_current_user()
        credentials = tornado.escape.json_decode(self.request.body)
        username = credentials.get('username')
        new_password1 = credentials.get('newpassword1')
        new_password2 = credentials.get('newpassword2')
        old_password = credentials.get('oldpassword')

        if username is None:
            username = current_user

        user = self.ws_context.get_user(current_user, old_password)
        if user is None:
            self.set_status(status_code=403,
                            reason="Current password does not match.")
            return

        if username != current_user and not self.has_admin_rights():
            self.set_status(
                status_code=403,
                reason="Not enough rights to perform this operation.")
            return

        if new_password1 != new_password2:
            self.set_status(status_code=403, reason="Passwords don't match")
            return

        user = get_user_by_name(ctx=self.ws_context,
                                user_name=username,
                                retain_password=True)

        user['password'] = new_password1

        update_user(self.ws_context,
                    user_name=username,
                    data=DbUser.from_dict(user))

        self.set_header('Content-Type', 'application/json')
        self.finish(
            tornado.escape.json_encode(
                {'message': f'User {username}\'s password updated.'}))
Ejemplo n.º 10
0
    def test_get_user_from_DB(self):
        ctx = new_test_service_context()

        user_stored = DbUser(id_='asodvia',
                             name='tom',
                             last_name='Scott',
                             password='******',
                             email='*****@*****.**',
                             first_name='Tom',
                             roles=[Roles.ADMIN.value],
                             phone='02102238958')
        ctx.db_driver.add_user(user_stored)

        user = ctx.get_user("tom")
        self.assertIsNotNone(user)
        self.assertEqual("Scott", user.last_name)

        user = ctx.get_user("tom", "hh")
        self.assertIsNotNone(user)
        self.assertEqual("*****@*****.**", user.email)
Ejemplo n.º 11
0
 def add_user(self, user: DbUser):
     user_dict = user.to_dict()
     result = self._user_collection.insert_one(user_dict)
     return str(result.inserted_id)