Exemplo n.º 1
0
    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))