package org.araqne.logdb.query.parser; import org.araqne.logdb.QueryContext; import org.araqne.logdb.QueryParseException; import org.araqne.logdb.QueryParserService; import org.araqne.logdb.Session; import org.araqne.logdb.impl.FunctionRegistryImpl; import org.araqne.logdb.query.command.Import; import org.araqne.logdb.query.engine.QueryParserServiceImpl; import org.araqne.logstorage.LogStorage; import org.araqne.logstorage.LogTableRegistry; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class ImportParserTest { private QueryParserService queryParserService; @Before public void setup() { QueryParserServiceImpl p = new QueryParserServiceImpl(); p.setFunctionRegistry(new FunctionRegistryImpl()); queryParserService = p; } @Test public void parseTableExists() { LogTableRegistry tableRegistry = mock(LogTableRegistry.class); LogStorage storage = mock(LogStorage.class); Session session = mock(Session.class); when(session.isAdmin()).thenReturn(true); when(tableRegistry.exists("sample")).thenReturn(true); QueryContext context = new QueryContext(session); ImportParser p = new ImportParser(tableRegistry, storage); p.setQueryParserService(queryParserService); Import imp = (Import) p.parse(context, "import sample"); assertEquals("sample", imp.getTableName()); assertEquals(false, imp.isCreate()); } /** * @since 1.8.2 */ @Test public void parseCreateOption() { LogTableRegistry tableRegistry = mock(LogTableRegistry.class); LogStorage storage = mock(LogStorage.class); Session session = mock(Session.class); when(session.isAdmin()).thenReturn(true); when(tableRegistry.exists("sample")).thenReturn(false); QueryContext context = new QueryContext(session); ImportParser p = new ImportParser(tableRegistry, storage); p.setQueryParserService(queryParserService); Import imp = (Import) p.parse(context, "import create=true sample"); assertEquals("sample", imp.getTableName()); assertTrue(imp.isCreate()); } @Test(expected = QueryParseException.class) public void parseNoPermission() { LogTableRegistry tableRegistry = mock(LogTableRegistry.class); LogStorage storage = mock(LogStorage.class); Session session = mock(Session.class); when(session.isAdmin()).thenReturn(false); when(tableRegistry.exists("sample")).thenReturn(true); QueryContext context = new QueryContext(session); ImportParser p = new ImportParser(tableRegistry, storage); p.setQueryParserService(queryParserService); p.parse(context, "import create=true sample"); } @Test public void testError30101(){ LogTableRegistry tableRegistry = mock(LogTableRegistry.class); LogStorage storage = mock(LogStorage.class); Session session = mock(Session.class); when(session.isAdmin()).thenReturn(true); when(tableRegistry.exists("sample")).thenReturn(true); QueryContext context = new QueryContext(session); ImportParser p = new ImportParser(tableRegistry, storage); p.setQueryParserService(queryParserService); String query = "import create=false create"; try { p.parse(context, query); fail(); } catch (QueryParseException e) { if(e.isDebugMode()){ System.out.println("query " + query); System.out.println(e.getMessage()); } assertEquals("30101", e.getType()); assertEquals(20, e.getStartOffset()); assertEquals(25, e.getEndOffset()); } } }