def setup_repositories(): """Setup repositories.""" from pybossa.repositories import UserRepository from pybossa.repositories import ProjectRepository from pybossa.repositories import BlogRepository from pybossa.repositories import TaskRepository from pybossa.repositories import AuditlogRepository from pybossa.repositories import WebhookRepository from pybossa.repositories import ResultRepository from pybossa.repositories import UserScoreRepository global user_repo global project_repo global blog_repo global task_repo global auditlog_repo global webhook_repo global result_repo global user_score_repo user_repo = UserRepository(db) project_repo = ProjectRepository(db) blog_repo = BlogRepository(db) task_repo = TaskRepository(db) auditlog_repo = AuditlogRepository(db) webhook_repo = WebhookRepository(db) result_repo = ResultRepository(db) user_score_repo = UserScoreRepository(db)
def setup_repositories(app): """Setup repositories.""" from pybossa.repositories import UserRepository from pybossa.repositories import ProjectRepository from pybossa.repositories import ProjectStatsRepository from pybossa.repositories import AnnouncementRepository from pybossa.repositories import BlogRepository from pybossa.repositories import TaskRepository from pybossa.repositories import AuditlogRepository from pybossa.repositories import WebhookRepository from pybossa.repositories import ResultRepository from pybossa.repositories import HelpingMaterialRepository global user_repo global project_repo global project_stats_repo global announcement_repo global blog_repo global task_repo global auditlog_repo global webhook_repo global result_repo global helping_repo language = app.config.get('FULLTEXTSEARCH_LANGUAGE') user_repo = UserRepository(db) project_repo = ProjectRepository(db) project_stats_repo = ProjectStatsRepository(db) announcement_repo = AnnouncementRepository(db) blog_repo = BlogRepository(db) task_repo = TaskRepository(db, language) auditlog_repo = AuditlogRepository(db) webhook_repo = WebhookRepository(db) result_repo = ResultRepository(db) helping_repo = HelpingMaterialRepository(db)
def test_delete_also_removes_dependant_resources(self): """Test delete removes project tasks and taskruns too""" from factories import TaskFactory, TaskRunFactory, BlogpostFactory from pybossa.repositories import TaskRepository, BlogRepository project = ProjectFactory.create() task = TaskFactory.create(project=project) taskrun = TaskRunFactory.create(task=task) blogpost = BlogpostFactory.create(project=project) self.project_repo.delete(project) deleted_task = TaskRepository(db).get_task(task.id) deleted_taskrun = TaskRepository(db).get_task_run(taskrun.id) deleted_blogpost = BlogRepository(db).get(blogpost.id) assert deleted_task is None, deleted_task assert deleted_taskrun is None, deleted_taskrun
def setUp(self): super(TestBaseAnalyst, self).setUp() BaseAnalyst.__abstractmethods__ = frozenset() self.ctx = ContextFixtures() self.base_analyst = BaseAnalyst() self.project_repo = ProjectRepository(db) self.result_repo = ResultRepository(db) self.task_repo = TaskRepository(db) assert_dict_equal.__self__.maxDiff = None assert_equal.__self__.maxDiff = None
def setUp(self): super(TestZ3950Analyst, self).setUp() self.ctx = ContextFixtures() self.z3950_analyst = Z3950Analyst() self.result_repo = ResultRepository(db) self.task_repo = TaskRepository(db) self.data = { 'user_id': [1], 'control_number': ['123'], 'reference': ['abc'], 'foo': ['bar'], 'comments': ['Some comment'] }
def setup_repositories(): from pybossa.repositories import UserRepository from pybossa.repositories import ProjectRepository from pybossa.repositories import BlogRepository from pybossa.repositories import TaskRepository from pybossa.repositories import AuditlogRepository global user_repo global project_repo global blog_repo global task_repo global auditlog_repo user_repo = UserRepository(db) project_repo = ProjectRepository(db) blog_repo = BlogRepository(db) task_repo = TaskRepository(db) auditlog_repo = AuditlogRepository(db)
def test_api_app_access_with_secure_app_access_enabled(self): """Test API and APP access with SECURE_APP_ACCESS enabled""" project = ProjectFactory.create() task = TaskFactory.create(project=project, n_answers=2, state='ongoing') task_repo = TaskRepository(db) admin = UserFactory.create() with patch.dict(self.flask_app.config, {'SECURE_APP_ACCESS': True}): url = '/api/completedtask?project_id=1&api_key=api-key1' res = self.app.get(url) assert res.status_code == 401, res.data url = '/api/completedtask?project_id=1' headers = {'Authorization': 'api-key1'} res = self.app.get(url, headers=headers) data = json.loads(res.data) # no completedtask yet, should return zero assert len(data) == 0, data # task is completed task_runs = TaskRunFactory.create_batch(2, task=task) task.state = 'completed' task_repo.update(task) url = '/api/completedtask?project_id=1' res = self.app.get(url, headers=headers) data = json.loads(res.data) # correct result assert data[0]['project_id'] == 1, data assert data[0]['state'] == u'completed', data # test api with incorrect api_key url = '/api/completedtask?project_id=1&api_key=BAD-api-key' res = self.app.get(url) err_msg = 'Status code should be 401' assert res.status_code == 401, err_msg url = "/project/%s?api_key=api-key1" % project.short_name res = self.app.get(url, follow_redirects=True, headers=headers) err_msg = 'app access should not be allowed with SECURE_APP_ACCESS enabled' assert "Sign in" in res.data, err_msg
def test_api_app_access_with_secure_app_access_disabled(self): """Test API and APP access with SECURE_APP_ACCESS disabled""" project = ProjectFactory.create() task = TaskFactory.create(project=project, n_answers=2, state='ongoing') task_repo = TaskRepository(db) with patch.dict(self.flask_app.config, {'SECURE_APP_ACCESS': False}): # Test no completedtask yet url = '/api/completedtask?project_id=1&api_key=api-key1' res = self.app.get(url) data = json.loads(res.data) assert len(data) == 0, data # test task is completed task_runs = TaskRunFactory.create_batch(2, task=task) task.state = 'completed' task_repo.update(task) url = '/api/completedtask?project_id=1&api_key=api-key1' res = self.app.get(url) data = json.loads(res.data) # correct result assert data[0]['project_id'] == 1, data assert data[0]['state'] == u'completed', data # test api with incorrect api_key url = '/api/completedtask?project_id=1&api_key=bad-api-key' res = self.app.get(url) err_msg = 'Status code should be 401' assert res.status_code == 401, err_msg url = "/project/%s?api_key=api-key1" % project.short_name res = self.app.get(url, follow_redirects=True) err_msg = 'app access should be allowed with SECURE_APP_ACCESS disabled' assert not "Sign in" in res.data, err_msg assert "Statistics" in res.data assert 'id="percent-completed"' in res.data assert "<div>100%</div>" in res.data
def setup_repositories(app): """Setup repositories.""" from pybossa.repositories import UserRepository from pybossa.repositories import ProjectRepository from pybossa.repositories import ProjectStatsRepository from pybossa.repositories import AnnouncementRepository from pybossa.repositories import BlogRepository from pybossa.repositories import TaskRepository from pybossa.repositories import AuditlogRepository from pybossa.repositories import WebhookRepository from pybossa.repositories import ResultRepository from pybossa.repositories import HelpingMaterialRepository from pybossa.repositories import PerformanceStatsRepository global user_repo global project_repo global project_stats_repo global announcement_repo global blog_repo global task_repo global auditlog_repo global webhook_repo global result_repo global helping_repo global performance_stats_repo language = app.config.get('FULLTEXTSEARCH_LANGUAGE') rdancy_upd_exp = app.config.get('REDUNDANCY_UPDATE_EXPIRATION', 30) user_repo = UserRepository(db) project_repo = ProjectRepository(db) project_stats_repo = ProjectStatsRepository(db) announcement_repo = AnnouncementRepository(db) blog_repo = BlogRepository(db) task_repo = TaskRepository(db, language, rdancy_upd_exp) auditlog_repo = AuditlogRepository(db) webhook_repo = WebhookRepository(db) result_repo = ResultRepository(db) helping_repo = HelpingMaterialRepository(db) performance_stats_repo = PerformanceStatsRepository(db)
# # PYBOSSA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with PYBOSSA. If not, see <http://www.gnu.org/licenses/>. from mock import patch, Mock from pybossa.importers import Importer from default import Test, with_context from factories import ProjectFactory, TaskFactory from pybossa.repositories import TaskRepository from pybossa.core import db task_repo = TaskRepository(db) @patch.object(Importer, '_create_importer_for') class TestImporterPublicMethods(Test): importer = Importer() @with_context def test_create_tasks_creates_them_correctly(self, importer_factory): mock_importer = Mock() mock_importer.tasks.return_value = [{ 'info': { 'question': 'question', 'url': 'url' }, 'n_answers': 20
def setUp(self): super(TestTaskRepositorySaveDeleteUpdate, self).setUp() self.task_repo = TaskRepository(db)
def setUp(self): super(TestTaskRepositoryForTaskQueries, self).setUp() self.task_repo = TaskRepository(db)
def setUp(self): super(TestUserRepository, self).setUp() self.user_repo = UserRepository(db) self.task_repo = TaskRepository(db)
def setUp(self): super(TestIIIFAnnotationAnalyst, self).setUp() self.ctx = ContextFixtures() self.result_repo = ResultRepository(db) self.task_repo = TaskRepository(db) self.iiif_analyst = IIIFAnnotationAnalyst() self.comments = ['Some comment'] self.tags = { 'foo': [ dict(x=100, y=100, w=100, h=100), dict(x=200, y=200, w=200, h=200) ], 'bar': [dict(x=300, y=300, w=300, h=300)] } transcription_data = {'foo': ['bar', 'baz'], 'qux': ['quux', 'quuz']} self.transcriptions_df = pandas.DataFrame(transcription_data) self.comment_annos = [] for comment in self.comments: self.comment_annos.append({ 'motivation': 'commenting', 'body': { 'type': 'TextualBody', 'value': comment, 'purpose': 'commenting', 'format': 'text/plain' }, 'target': 'example.com' }) self.tagging_annos = [] for tag, rect_list in self.tags.items(): for rect in rect_list: self.tagging_annos.append({ 'motivation': 'tagging', 'body': { 'type': 'TextualBody', 'purpose': 'tagging', 'value': tag }, 'target': { 'source': 'example.com', 'selector': { 'conformsTo': 'http://www.w3.org/TR/media-frags/', 'type': 'FragmentSelector', 'value': '?xywh={0},{1},{2},{3}'.format( rect['x'], rect['y'], rect['w'], rect['h']) } } }) self.transcription_annos = [] for tag, value_list in transcription_data.items(): for value in value_list: self.transcription_annos.append({ 'motivation': 'describing', 'body': [{ 'type': 'TextualBody', 'purpose': 'tagging', 'value': tag }, { 'type': 'TextualBody', 'purpose': 'describing', 'value': value, 'format': 'text/plain' }], 'target': 'example.com' }) self.data = { 'user_id': [1, 2, 3], 'info': [self.comment_annos, self.tagging_annos, self.transcription_annos] }