def test_create_idx_type_model_permissions(self): elastic_dict = elastic_factory.get_elastic_settings_with_user_uploads() indexKey = 'CP_STATS_UD' user_upload_dict = list(elastic_dict[indexKey]['idx_type'].keys()) indexName = 'CP_STATS_UD' if len(user_upload_dict) > 1: indexType = user_upload_dict[0] else: indexType = 'UD-RANDOMTMPTEST' elastic_dict = ElasticSettings.attrs().get('IDX') idx_type_dict = {} idx_type_dict[indexType] = { 'label': 'testlabel', 'type': indexType } elastic_dict['CP_STATS_UD']['idx_type'] = idx_type_dict indexTypeModel = indexKey.lower() + elastic_factory.PERMISSION_MODEL_NAME_TYPE_DELIMITER + indexType.lower() + \ elastic_factory.PERMISSION_MODEL_TYPE_SUFFIX elastic_factory.create_idx_type_model_permissions( self.user, elastic_dict=elastic_dict, indexKey=indexName, indexTypeKey=indexType) # check if model exists db_models = elastic_factory.get_db_models( app_label=elastic_factory.PERMISSION_MODEL_APP_NAME, existing=True) self.assertIn(indexTypeModel, db_models, ' model exists for ' + indexType) # check if permission exists content_type = None try: content_type = ContentType.objects.get( model=indexTypeModel.lower(), app_label=settings.ELASTIC_PERMISSION_MODEL_APP_NAME) except: pass permissions = None perm_code_name = 'can_read_' + indexTypeModel.lower() if content_type: permissions = Permission.objects.filter(content_type=content_type) self.assertIn(perm_code_name, [perm.codename for perm in permissions], 'perm present') # Request new instance of User user = get_object_or_404(User, pk=self.user.id) # Permission cache is repopulated from the database self.assertTrue( user.has_perm(settings.ELASTIC_PERMISSION_MODEL_APP_NAME + '.' + perm_code_name))
def test_elastic_models_pydgin(self): '''check whether the right models are created for pydgin''' elastic_factory.create_dynamic_models() # check model names are created correctly expected_models = ['disease_idx', 'gene-pathway_idx_type', 'gene-interactions_idx_type', 'marker-ic_idx_type', 'publication-publication_idx_type', 'disease-disease_idx_type'] existing_models = elastic_factory.get_db_models(existing=True) for model in expected_models: self.assertIn(model, existing_models, 'Model exists: ' + model)
def test_elastic_models_pydgin(self): '''check whether the right models are created for pydgin''' elastic_factory.create_dynamic_models() # check model names are created correctly expected_models = [ 'disease_idx', 'gene-pathway_idx_type', 'gene-interactions_idx_type', 'marker-ic_idx_type', 'publication-publication_idx_type', 'disease-disease_idx_type' ] existing_models = elastic_factory.get_db_models(existing=True) for model in expected_models: self.assertIn(model, existing_models, 'Model exists: ' + model)
def test_create_idx_type_model_permissions(self): elastic_dict = elastic_factory.get_elastic_settings_with_user_uploads() indexKey = 'CP_STATS_UD' user_upload_dict = list(elastic_dict[indexKey]['idx_type'].keys()) indexName = 'CP_STATS_UD' if len(user_upload_dict) > 1: indexType = user_upload_dict[0] else: indexType = 'UD-RANDOMTMPTEST' elastic_dict = ElasticSettings.attrs().get('IDX') idx_type_dict = {} idx_type_dict[indexType] = {'label': 'testlabel', 'type': indexType} elastic_dict['CP_STATS_UD']['idx_type'] = idx_type_dict indexTypeModel = indexKey.lower() + elastic_factory.PERMISSION_MODEL_NAME_TYPE_DELIMITER + indexType.lower() + \ elastic_factory.PERMISSION_MODEL_TYPE_SUFFIX elastic_factory.create_idx_type_model_permissions(self.user, elastic_dict=elastic_dict, indexKey=indexName, indexTypeKey=indexType) # check if model exists db_models = elastic_factory.get_db_models(app_label=elastic_factory.PERMISSION_MODEL_APP_NAME, existing=True) self.assertIn(indexTypeModel, db_models, ' model exists for ' + indexType) # check if permission exists content_type = None try: content_type = ContentType.objects.get(model=indexTypeModel.lower(), app_label=settings.ELASTIC_PERMISSION_MODEL_APP_NAME) except: pass permissions = None perm_code_name = 'can_read_' + indexTypeModel.lower() if content_type: permissions = Permission.objects.filter(content_type=content_type) self.assertIn(perm_code_name, [perm.codename for perm in permissions], 'perm present') # Request new instance of User user = get_object_or_404(User, pk=self.user.id) # Permission cache is repopulated from the database self.assertTrue(user.has_perm(settings.ELASTIC_PERMISSION_MODEL_APP_NAME + '.' + perm_code_name))