示例#1
0
    def test_undo(self):
        url = url_join(self.url, 'token')
        r = requests.post(url, data={'email': 'a', 'password': '******'})
        response1 = json.loads(r.text)
        r = requests.post(url, data={'email': 'b', 'password': '******'})
        response2 = json.loads(r.text)

        def handle_chat_message(sno, message):
            self.file_message_counter[sno - 1] += 1

        sio1 = socketio.Client()
        self.sockets.append(sio1)
        sio2 = socketio.Client()
        self.sockets.append(sio2)

        sio1.on('file-changed', handler=partial(handle_chat_message, 1))
        sio2.on('file-changed', handler=partial(handle_chat_message, 2))
        sio1.connect(self.url)
        sio2.connect(self.url)
        with self.app.app_context():
            p_id = get_recent_pid(self.fm, self.user)
            User.query.filter_by(id=9).first()
            perm = Permission(u_id=9, p_id=p_id, access_level="admin")
            db.session.add(perm)
            db.session.commit()
            sio1.emit('start', response1)
            sio2.emit('start', response2)
            QtTest.QTest.qWait(100)
            sio1.emit(
                'file-save', {
                    "p_id": p_id,
                    "token": response1['token'],
                    "content": "file save content 1"
                })
            QtTest.QTest.qWait(100)
            # second file change
            sio1.emit(
                'file-save', {
                    "p_id": p_id,
                    "token": response1['token'],
                    "content": "file save content 2"
                })
            QtTest.QTest.qWait(100)
        with self.app.app_context():
            p_id = get_recent_pid(self.fm, self.user)
            changes = Change.query.filter_by(p_id=p_id).all()
            assert self.fm.undo(changes[0].id, self.user) is True
            assert len(self.fm.get_all_changes(p_id, self.user)) == 3
            assert self.fm.get_file(p_id, self.user) == "file save content 1"
示例#2
0
 def test_undo(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         changes = Change.query.filter_by(p_id=p_id).all()
         assert self.fm.undo(changes[0].id, self.user) is True
         assert len(self.fm.get_all_changes(p_id, self.user)) == 3
         assert self.fm.get_file(p_id, self.user) == "file save content 1"
示例#3
0
 def teardown(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         self.fm.delete_file(p_id, self.user)
         db.session.commit()
     for socket in self.sockets:
         socket.disconnect()
示例#4
0
 def test_update_project(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
     # ToDo handle paths with blank characters here
     data = {
         "token": self.token,
         "p_id": p_id,
         "attribute": "path",
         "value": "a_diff_path"
     }
     get_proj_url = url_join(self.url, 'get_project_by_id')
     update_proj_url = url_join(self.url, 'update_project')
     r = requests.post(update_proj_url, data=data)
     assert r.text == "True"
     # to make sure that path has changed, which is indirectly known by this request
     # getting results properly
     r = requests.get(get_proj_url, data=data)
     assert r.text != "False"
     data = {
         "token": self.token,
         "p_id": p_id,
         "attribute": "description",
         "value": "a_diff description"
     }
     r = requests.post(update_proj_url, data=data)
     assert r.text == "True"
     with self.app.app_context():
         project = Project.query.filter_by(id=p_id).first()
         assert project.path == "a_diff_path"
         assert project.description == "a_diff description"
示例#5
0
 def test_delete_project(self):
     with self.app.app_context():
         response = mscolab_register_and_login(self.app, self.url, 'a', 'a',
                                               'a')
         data, response = mscolab_create_project(
             self.app,
             self.url,
             response,
             path='f3',
             description='f3 test example')
         p_id = get_recent_pid(self.fm, self.user)
         assert p_id == 7
         assert response.status == '200 OK'
         user2 = User.query.filter_by(id=9).first()
         assert self.fm.delete_file(p_id, user2) is False
         assert self.fm.delete_file(p_id, self.user) is True
         assert self.fm.delete_file(p_id, self.user) is False
         permissions = Permission.query.filter_by(p_id=p_id).all()
         assert len(permissions) == 0
         projects_db = Project.query.filter_by(id=p_id).all()
         assert len(projects_db) == 0
         changes = Change.query.filter_by(p_id=p_id).all()
         assert len(changes) == 0
         messages = Message.query.filter_by(p_id=p_id).all()
         assert len(messages) == 0
示例#6
0
 def test_get_project(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         data = {"token": self.token, "p_id": p_id}
         url = url_join(self.url, 'get_project_by_id')
         r = requests.get(url, data=data)
         assert json.loads(r.text)["content"] == self.fm.get_file(
             int(p_id), self.user)
示例#7
0
    def test_file_save(self):
        url = url_join(MSCOLAB_URL_TEST, 'token')
        r = requests.post(url, data={'email': 'a', 'password': '******'})
        response1 = json.loads(r.text)
        r = requests.post(url, data={'email': 'b', 'password': '******'})
        response2 = json.loads(r.text)

        def handle_chat_message(sno, message):
            self.file_message_counter[sno - 1] += 1

        sio1 = socketio.Client()
        sio2 = socketio.Client()

        sio1.on('file-changed', handler=partial(handle_chat_message, 1))
        sio2.on('file-changed', handler=partial(handle_chat_message, 2))
        sio1.connect(MSCOLAB_URL_TEST)
        sio2.connect(MSCOLAB_URL_TEST)
        with self.app.app_context():
            p_id = get_recent_pid(self.fm, self.user)
            user2 = User.query.filter_by(id=9).first()
            perm = Permission(u_id=9, p_id=p_id, access_level="admin")
            db.session.add(perm)
            db.session.commit()
            sio1.emit('start', response1)
            sio2.emit('start', response2)
            time.sleep(2)
            sio1.emit(
                'file-save', {
                    "p_id": p_id,
                    "token": response1['token'],
                    "content": "file save content 1"
                })
            time.sleep(2)
            # second file change
            sio1.emit(
                'file-save', {
                    "p_id": p_id,
                    "token": response1['token'],
                    "content": "file save content 2"
                })
            time.sleep(2)
            # check if there were events triggered related to file-save
            assert self.file_message_counter[0] == 2
            assert self.file_message_counter[1] == 2
            # check if content is saved in file
            assert self.fm.get_file(p_id, user2) == "file save content 2"
            # check if change is saved properly
            changes = self.fm.get_all_changes(p_id, self.user)
            assert len(changes) == 2
            change = Change.query.order_by(Change.created_at.desc()).first()
            change_content = self.fm.get_change_content(change.id)
            assert change_content == "file save content 2"
            perm = Permission.query.filter_by(u_id=9, p_id=p_id).first()
            db.session.delete(perm)
            db.session.commit()
            # to disconnect sockets later
            self.sockets.append(sio1)
            self.sockets.append(sio2)
示例#8
0
 def test_is_admin(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         u_id = self.user.id
         assert self.fm.is_admin(u_id, p_id) is True
         undefined_p_id = 123
         assert self.fm.is_admin(u_id, undefined_p_id) is False
         no_perm_p_id = 2
         assert self.fm.is_admin(u_id, no_perm_p_id) is False
示例#9
0
 def test_authorized_users(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
     data = {"token": self.token, "p_id": p_id}
     url = url_join(self.url, 'authorized_users')
     r = requests.get(url, data=data)
     users = json.loads(r.text)["users"]
     assert len(users) == 2
     # for any other random process which doesn't exist it will return empty array
     data["p_id"] = 43
     r = requests.get(url, data=data)
     users = json.loads(r.text)["users"]
     assert len(users) == 0
示例#10
0
 def test_get_users_with_permission(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
     data = {"token": self.token, "p_id": p_id}
     url = url_join(self.url, "users_with_permission")
     res = requests.get(url, data=data).json()
     assert res["success"] is True
     data["p_id"] = self.undefined_p_id
     res = requests.get(url, data=data).json()
     assert res["success"] is False
     data["p_id"] = self.no_perm_p_id
     res = requests.get(url, data=data).json()
     assert res["success"] is False
示例#11
0
 def test_modify_project(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         # testing for wrong characters in path like ' ', '/'
         assert self.fm.update_project(p_id, 'path', 'dummy wrong',
                                       self.user) is False
         assert self.fm.update_project(p_id, 'path', 'dummy/wrong',
                                       self.user) is False
         assert self.fm.update_project(p_id, 'path', 'dummy',
                                       self.user) is True
         assert os.path.exists(
             os.path.join(mscolab_settings.MSCOLAB_DATA_DIR, 'dummy'))
         assert self.fm.update_project(p_id, 'description', 'dummy',
                                       self.user) is True
示例#12
0
 def test_delete_project(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         user2 = User.query.filter_by(id=9).first()
         assert self.fm.delete_file(p_id, user2) is False
         assert self.fm.delete_file(p_id, self.user) is True
         assert self.fm.delete_file(p_id, self.user) is False
         permissions = Permission.query.filter_by(p_id=p_id).all()
         assert len(permissions) == 0
         projects_db = Project.query.filter_by(id=p_id).all()
         assert len(projects_db) == 0
         changes = Change.query.filter_by(p_id=p_id).all()
         assert len(changes) == 0
         messages = Message.query.filter_by(p_id=p_id).all()
         assert len(messages) == 0
示例#13
0
 def test_change_content(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         ch = Change(int(p_id), 8, "", "Version changed", "some comment")
         db.session.add(ch)
         db.session.commit()
         data = {"token": self.token, "p_id": p_id}
         get_proj_url = url_join(self.url, 'get_project_by_id')
         res = requests.get(get_proj_url, data=data)
         content = json.loads(res.text)["content"]
         change = Change.query.order_by(Change.created_at.desc()).first()
         data = {"token": self.token, "ch_id": change.id}
         get_change_content_url = url_join(self.url, 'get_change_content')
         res = requests.get(get_change_content_url, data=data).json()
         change_content = res["content"]
         assert content.strip() == change_content.strip()
示例#14
0
 def test_delete_bulk_permissions(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
     data = {
         "token": self.token,
         "p_id": p_id,
         "selected_userids": json.dumps([12, 13]),
     }
     url = url_join(self.url, 'delete_bulk_permissions')
     r = requests.post(url, data=data).json()
     assert r["success"] is True
     data["p_id"] = self.undefined_p_id
     r = requests.post(url, data=data).json()
     assert r["success"] is False
     data["p_id"] = self.no_perm_p_id
     r = requests.post(url, data=data).json()
     assert r["success"] is False
示例#15
0
    def test_change(self):
        """
        since file needs to be saved to inflict changes, changes during integration
        tests have to be manually inserted
        """
        with self.app.app_context():
            p_id = get_recent_pid(self.fm, self.user)
            ch = Change(int(p_id), 8, "", "Version1", "some comment")

            db.session.add(ch)
            db.session.commit()
        data = {"token": self.token, "p_id": p_id}
        # test 'get all changes' request
        url = url_join(self.url, 'get_all_changes')
        r = requests.get(url, data=data)
        changes = json.loads(r.text)["changes"]
        assert len(changes) == 1
        assert changes[0]["comment"] == "some comment"
示例#16
0
    def test_delete_project(self):
        with self.app.app_context():
            response = mscolab_register_and_login(self.app, self.url, 'a', 'a',
                                                  'a')
            assert response.status == '200 OK'
            data, response = mscolab_create_project(
                self.app,
                self.url,
                response,
                path='f3',
                description='f3 test example')
            assert response.status == '200 OK'
            p_id = get_recent_pid(self.fm, self.user)

        # first free number after sseding
        assert p_id == 7
        data = {"token": self.token, "p_id": p_id}
        url = url_join(self.url, 'delete_project')
        res = requests.post(url, data=data).json()
        assert res["success"] is True
示例#17
0
 def test_set_version_name(self):
     with self.app.app_context():
         p_id = int(get_recent_pid(self.fm, self.user))
         ch = Change(int(p_id), 8, "", "Version changed", "some comment")
         db.session.add(ch)
         db.session.commit()
         change = Change.query.filter_by(p_id=p_id).order_by(
             Change.created_at.desc()).first()
     data = {
         "token": self.token,
         "ch_id": change.id,
         "p_id": p_id,
         "version_name": "Test Version Name"
     }
     url = url_join(self.url, 'set_version_name')
     res = requests.post(url, data=data).json()
     assert res["success"] is True
     with self.app.app_context():
         change = Change.query.filter_by(id=change.id).first()
         assert change.version_name == "Test Version Name"
示例#18
0
    def setup(self):
        self.process, self.url, self.app, self.sio, self.cm, self.fm = mscolab_start_server(
            PORTS)
        QtTest.QTest.qWait(500)
        self.application = QtWidgets.QApplication(sys.argv)
        self.window = MSSMscolabWindow(
            data_dir=mscolab_settings.MSCOLAB_DATA_DIR,
            mscolab_server_url=self.url)

        with self.app.app_context():
            response = mscolab_register_and_login(self.app, self.url,
                                                  'a1a@a1a', 'a1a', 'a1a')
            _ = mscolab_create_project(self.app,
                                       self.url,
                                       response,
                                       path='f3',
                                       description='f3 test example')
            self.user = User.query.filter_by(emailid="a1a@a1a").first()
            self.test_p_id = get_recent_pid(self.fm, self.user)
            self.test_sid = 25
            socket_storage = {'s_id': self.test_sid, 'u_id': self.user.id}
            self.sockets = [socket_storage]
示例#19
0
 def test_get_recent_pid(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
     assert p_id == 4
示例#20
0
 def test_authorized_users(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         assert p_id == 4
         assert len(self.fm.get_authorized_users(p_id)) == 2
示例#21
0
 def test_get_project(self):
     with self.app.app_context():
         p_id = get_recent_pid(self.fm, self.user)
         assert self.fm.get_file(p_id, self.user) is not False
         user2 = User.query.filter_by(id=9).first()
         assert self.fm.get_file(p_id, user2) is False