Search in sources :

Example 16 with Check

use of com.yahoo.elide.core.security.checks.Check in project elide by yahoo.

the class ConfigStoreIntegrationTestSetup method buildDictionary.

@Bean
public EntityDictionary buildDictionary(AutowireCapableBeanFactory beanFactory, ClassScanner scanner, @Autowired(required = false) DynamicConfiguration dynamicConfig, ElideConfigProperties settings, @Qualifier("entitiesToExclude") Set<Type<?>> entitiesToExclude) {
    Map<String, Class<? extends Check>> checks = new HashMap<>();
    if (settings.getDynamicConfig().isConfigApiEnabled()) {
        checks.put(ConfigChecks.CAN_CREATE_CONFIG, ConfigChecks.CanCreate.class);
        checks.put(ConfigChecks.CAN_READ_CONFIG, ConfigChecks.CanRead.class);
        checks.put(ConfigChecks.CAN_DELETE_CONFIG, ConfigChecks.CanDelete.class);
        checks.put(ConfigChecks.CAN_UPDATE_CONFIG, ConfigChecks.CanNotUpdate.class);
    }
    EntityDictionary dictionary = new EntityDictionary(// Checks
    checks, // Role Checks
    new HashMap<>(), new Injector() {

        @Override
        public void inject(Object entity) {
            beanFactory.autowireBean(entity);
        }

        @Override
        public <T> T instantiate(Class<T> cls) {
            return beanFactory.createBean(cls);
        }
    }, // Serde Lookup
    CoerceUtil::lookup, entitiesToExclude, scanner);
    return dictionary;
}
Also used : HashMap(java.util.HashMap) Check(com.yahoo.elide.core.security.checks.Check) CoerceUtil(com.yahoo.elide.core.utils.coerce.CoerceUtil) Injector(com.yahoo.elide.core.dictionary.Injector) ConfigChecks(com.yahoo.elide.modelconfig.store.models.ConfigChecks) EntityDictionary(com.yahoo.elide.core.dictionary.EntityDictionary) Bean(org.springframework.context.annotation.Bean)

Example 17 with Check

use of com.yahoo.elide.core.security.checks.Check in project elide by yahoo.

the class GraphQLEndpointTest method setupTest.

@BeforeEach
public void setupTest() throws Exception {
    HashMapDataStore inMemoryStore = new HashMapDataStore(DefaultClassScanner.getInstance(), Book.class.getPackage());
    Map<String, Class<? extends Check>> checkMappings = new HashMap<>();
    checkMappings.put(UserChecks.IS_USER_1, UserChecks.IsUserId.One.class);
    checkMappings.put(UserChecks.IS_USER_2, UserChecks.IsUserId.Two.class);
    checkMappings.put(CommitChecks.IS_NOT_USER_3, CommitChecks.IsNotUser3.class);
    elide = spy(new Elide(new ElideSettingsBuilder(inMemoryStore).withEntityDictionary(EntityDictionary.builder().checks(checkMappings).build()).withAuditLogger(audit).build()));
    elide.doScans();
    endpoint = new GraphQLEndpoint(elide);
    DataStoreTransaction tx = inMemoryStore.beginTransaction();
    // Initial data
    Book book1 = new Book();
    Author author1 = new Author();
    Author author2 = new Author();
    DisallowTransfer noShare = new DisallowTransfer();
    book1.setId(1L);
    book1.setTitle("My first book");
    book1.setAuthors(Sets.newHashSet(author1));
    author1.setId(1L);
    author1.setName("Ricky Carmichael");
    author1.setBooks(Sets.newHashSet(book1));
    author1.setBookTitlesAndAwards(Stream.of(new AbstractMap.SimpleImmutableEntry<>("Bookz", "Pulitzer Prize"), new AbstractMap.SimpleImmutableEntry<>("Lost in the Data", "PEN/Faulkner Award")).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
    author2.setId(2L);
    author2.setName("The Silent Author");
    author2.setBookTitlesAndAwards(Stream.of(new AbstractMap.SimpleImmutableEntry<>("Working Hard or Hardly Working", "Booker Prize")).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
    noShare.setId(1L);
    tx.createObject(book1, null);
    tx.createObject(author1, null);
    tx.createObject(author2, null);
    tx.createObject(noShare, null);
    tx.save(book1, null);
    tx.save(author1, null);
    tx.save(author2, null);
    tx.save(noShare, null);
    tx.commit(null);
}
Also used : HashMap(java.util.HashMap) MultivaluedHashMap(javax.ws.rs.core.MultivaluedHashMap) Check(com.yahoo.elide.core.security.checks.Check) DisallowTransfer(graphqlEndpointTestModels.DisallowTransfer) AbstractMap(java.util.AbstractMap) ElideSettingsBuilder(com.yahoo.elide.ElideSettingsBuilder) Book(graphqlEndpointTestModels.Book) HashMapDataStore(com.yahoo.elide.core.datastore.inmemory.HashMapDataStore) DataStoreTransaction(com.yahoo.elide.core.datastore.DataStoreTransaction) Author(graphqlEndpointTestModels.Author) Elide(com.yahoo.elide.Elide) CommitChecks(graphqlEndpointTestModels.security.CommitChecks) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 18 with Check

use of com.yahoo.elide.core.security.checks.Check in project elide by yahoo.

the class GraphQLTableExportOperationTest method setupMocks.

@BeforeEach
public void setupMocks(@TempDir Path tempDir) {
    dataStore = new HashMapDataStore(DefaultClassScanner.getInstance(), new HashSet<>(Arrays.asList(TableExport.class.getPackage(), ArtifactGroup.class.getPackage())));
    Map<String, Class<? extends Check>> map = new HashMap<>();
    map.put(AsyncAPIInlineChecks.AsyncAPIOwner.PRINCIPAL_IS_OWNER, AsyncAPIInlineChecks.AsyncAPIOwner.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIAdmin.PRINCIPAL_IS_ADMIN, AsyncAPIInlineChecks.AsyncAPIAdmin.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIStatusValue.VALUE_IS_CANCELLED, AsyncAPIInlineChecks.AsyncAPIStatusValue.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIStatusQueuedValue.VALUE_IS_QUEUED, AsyncAPIInlineChecks.AsyncAPIStatusQueuedValue.class);
    elide = new Elide(new ElideSettingsBuilder(dataStore).withEntityDictionary(EntityDictionary.builder().checks(map).build()).withAuditLogger(new Slf4jLogger()).withExportApiPath("/export").build());
    elide.doScans();
    user = mock(User.class);
    requestScope = mock(RequestScope.class);
    asyncExecutorService = mock(AsyncExecutorService.class);
    engine = new FileResultStorageEngine(tempDir.toString(), false);
    when(asyncExecutorService.getElide()).thenReturn(elide);
    when(requestScope.getApiVersion()).thenReturn(NO_VERSION);
    when(requestScope.getUser()).thenReturn(user);
    when(requestScope.getElideSettings()).thenReturn(elide.getElideSettings());
    when(requestScope.getBaseUrlEndPoint()).thenReturn("https://elide.io");
}
Also used : FileResultStorageEngine(com.yahoo.elide.async.service.storageengine.FileResultStorageEngine) User(com.yahoo.elide.core.security.User) HashMap(java.util.HashMap) Slf4jLogger(com.yahoo.elide.core.audit.Slf4jLogger) Check(com.yahoo.elide.core.security.checks.Check) AsyncAPIInlineChecks(com.yahoo.elide.async.models.security.AsyncAPIInlineChecks) RequestScope(com.yahoo.elide.core.RequestScope) ElideSettingsBuilder(com.yahoo.elide.ElideSettingsBuilder) AsyncExecutorService(com.yahoo.elide.async.service.AsyncExecutorService) HashMapDataStore(com.yahoo.elide.core.datastore.inmemory.HashMapDataStore) Elide(com.yahoo.elide.Elide) HashSet(java.util.HashSet) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 19 with Check

use of com.yahoo.elide.core.security.checks.Check in project elide by yahoo.

the class JsonAPITableExportOperationTest method setupMocks.

@BeforeEach
public void setupMocks(@TempDir Path tempDir) {
    dataStore = new HashMapDataStore(DefaultClassScanner.getInstance(), new HashSet<>(Arrays.asList(TableExport.class.getPackage(), ArtifactGroup.class.getPackage())));
    Map<String, Class<? extends Check>> map = new HashMap<>();
    map.put(AsyncAPIInlineChecks.AsyncAPIOwner.PRINCIPAL_IS_OWNER, AsyncAPIInlineChecks.AsyncAPIOwner.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIAdmin.PRINCIPAL_IS_ADMIN, AsyncAPIInlineChecks.AsyncAPIAdmin.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIStatusValue.VALUE_IS_CANCELLED, AsyncAPIInlineChecks.AsyncAPIStatusValue.class);
    map.put(AsyncAPIInlineChecks.AsyncAPIStatusQueuedValue.VALUE_IS_QUEUED, AsyncAPIInlineChecks.AsyncAPIStatusQueuedValue.class);
    elide = new Elide(new ElideSettingsBuilder(dataStore).withEntityDictionary(EntityDictionary.builder().checks(map).build()).withAuditLogger(new Slf4jLogger()).withExportApiPath("/export").build());
    elide.doScans();
    user = mock(User.class);
    requestScope = mock(RequestScope.class);
    asyncExecutorService = mock(AsyncExecutorService.class);
    engine = new FileResultStorageEngine(tempDir.toString(), true);
    when(asyncExecutorService.getElide()).thenReturn(elide);
    when(requestScope.getApiVersion()).thenReturn(NO_VERSION);
    when(requestScope.getUser()).thenReturn(user);
    when(requestScope.getElideSettings()).thenReturn(elide.getElideSettings());
    when(requestScope.getBaseUrlEndPoint()).thenReturn("https://elide.io");
}
Also used : FileResultStorageEngine(com.yahoo.elide.async.service.storageengine.FileResultStorageEngine) User(com.yahoo.elide.core.security.User) HashMap(java.util.HashMap) Slf4jLogger(com.yahoo.elide.core.audit.Slf4jLogger) Check(com.yahoo.elide.core.security.checks.Check) AsyncAPIInlineChecks(com.yahoo.elide.async.models.security.AsyncAPIInlineChecks) RequestScope(com.yahoo.elide.core.RequestScope) ElideSettingsBuilder(com.yahoo.elide.ElideSettingsBuilder) AsyncExecutorService(com.yahoo.elide.async.service.AsyncExecutorService) HashMapDataStore(com.yahoo.elide.core.datastore.inmemory.HashMapDataStore) Elide(com.yahoo.elide.Elide) HashSet(java.util.HashSet) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 20 with Check

use of com.yahoo.elide.core.security.checks.Check in project elide by yahoo.

the class AsyncExecutorServiceTest method setupMockElide.

@BeforeAll
public void setupMockElide() {
    HashMapDataStore inMemoryStore = new HashMapDataStore(DefaultClassScanner.getInstance(), AsyncQuery.class.getPackage());
    Map<String, Class<? extends Check>> checkMappings = new HashMap<>();
    elide = new Elide(new ElideSettingsBuilder(inMemoryStore).withEntityDictionary(EntityDictionary.builder().checks(checkMappings).build()).build());
    asyncAPIDao = mock(DefaultAsyncAPIDAO.class);
    testUser = mock(User.class);
    scope = mock(RequestScope.class);
    resultStorageEngine = mock(FileResultStorageEngine.class);
    service = new AsyncExecutorService(elide, Executors.newFixedThreadPool(5), Executors.newFixedThreadPool(5), asyncAPIDao);
}
Also used : FileResultStorageEngine(com.yahoo.elide.async.service.storageengine.FileResultStorageEngine) User(com.yahoo.elide.core.security.User) HashMap(java.util.HashMap) Check(com.yahoo.elide.core.security.checks.Check) RequestScope(com.yahoo.elide.core.RequestScope) ElideSettingsBuilder(com.yahoo.elide.ElideSettingsBuilder) HashMapDataStore(com.yahoo.elide.core.datastore.inmemory.HashMapDataStore) AsyncQuery(com.yahoo.elide.async.models.AsyncQuery) Elide(com.yahoo.elide.Elide) DefaultAsyncAPIDAO(com.yahoo.elide.async.service.dao.DefaultAsyncAPIDAO) BeforeAll(org.junit.jupiter.api.BeforeAll)

Aggregations

Check (com.yahoo.elide.core.security.checks.Check)22 HashMap (java.util.HashMap)17 ElideSettingsBuilder (com.yahoo.elide.ElideSettingsBuilder)13 BeforeEach (org.junit.jupiter.api.BeforeEach)11 Elide (com.yahoo.elide.Elide)9 RequestScope (com.yahoo.elide.core.RequestScope)8 HashMapDataStore (com.yahoo.elide.core.datastore.inmemory.HashMapDataStore)8 EntityDictionary (com.yahoo.elide.core.dictionary.EntityDictionary)8 Role (com.yahoo.elide.core.security.checks.prefab.Role)6 FilterExpressionCheck (com.yahoo.elide.core.security.checks.FilterExpressionCheck)5 AsyncQuery (com.yahoo.elide.async.models.AsyncQuery)4 Injector (com.yahoo.elide.core.dictionary.Injector)4 FilterExpression (com.yahoo.elide.core.filter.expression.FilterExpression)4 User (com.yahoo.elide.core.security.User)4 UserCheck (com.yahoo.elide.core.security.checks.UserCheck)4 Type (com.yahoo.elide.core.type.Type)4 DefaultAsyncAPIDAO (com.yahoo.elide.async.service.dao.DefaultAsyncAPIDAO)3 FileResultStorageEngine (com.yahoo.elide.async.service.storageengine.FileResultStorageEngine)3 DataStoreTransaction (com.yahoo.elide.core.datastore.DataStoreTransaction)3 OrFilterExpression (com.yahoo.elide.core.filter.expression.OrFilterExpression)3