/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package gobblin.source.extractor.extract.jdbc; import org.testng.Assert; import org.testng.annotations.Test; /** * Unit tests for {@link SqlQueryUtils} */ public class SqlQueryUtilsTest { @Test public void testAddPredicate() { Assert.assertEquals(SqlQueryUtils.addPredicate("SELECT foo FROM bar", "foo != 'blah'"), "SELECT foo FROM bar where (foo != 'blah')"); Assert.assertEquals(SqlQueryUtils.addPredicate("SELECT foo,whereTo FROM bar WHERE whereTo==foo", "foo != 'blah'"), "SELECT foo,whereTo FROM bar WHERE whereTo==foo and (foo != 'blah')"); Assert.assertEquals(SqlQueryUtils.addPredicate("SELECT foo,andThis FROM bar WHERE andThis>foo", "foo != 'blah'"), "SELECT foo,andThis FROM bar WHERE andThis>foo and (foo != 'blah')"); Assert.assertEquals(SqlQueryUtils.addPredicate("SELECT foo FROM bar", null), "SELECT foo FROM bar"); Assert.assertEquals(SqlQueryUtils.addPredicate("SELECT foo FROM bar", ""), "SELECT foo FROM bar"); try { SqlQueryUtils.addPredicate("SELECT foo,foo1 WHERE foo1==foo", "foo != 'blah'"); } catch (IllegalArgumentException e) { Assert.assertTrue(e.toString().contains("'from'")); } try { SqlQueryUtils.addPredicate("SELECT foo,foo1 FROM blah WHERE foo1==foo ORDER by foo", "foo != 'blah'"); } catch (IllegalArgumentException e) { Assert.assertTrue(e.toString().contains("'order by'")); } try { SqlQueryUtils.addPredicate("SELECT foo,foo1 FROM blah WHERE foo1==foo GROUP BY foo", "foo != 'blah'"); } catch (IllegalArgumentException e) { Assert.assertTrue(e.toString().contains("'group by'")); } try { SqlQueryUtils.addPredicate("SELECT foo,foo1 FROM blah WHERE foo1==foo HAVING foo1 is null", "foo != 'blah'"); } catch (IllegalArgumentException e) { Assert.assertTrue(e.toString().contains("'having'")); } try { SqlQueryUtils.addPredicate("SELECT foo,foo1 FROM blah WHERE foo1==foo LIMIT 10", "foo != 'blah'"); } catch (IllegalArgumentException e) { Assert.assertTrue(e.toString().contains("'limit'")); } } @Test public void testCastToBoolean() { Assert.assertTrue(SqlQueryUtils.castToBoolean("y")); Assert.assertTrue(SqlQueryUtils.castToBoolean("yes")); Assert.assertTrue(SqlQueryUtils.castToBoolean("t")); Assert.assertTrue(SqlQueryUtils.castToBoolean("true")); Assert.assertTrue(SqlQueryUtils.castToBoolean("1")); Assert.assertFalse(SqlQueryUtils.castToBoolean("n")); Assert.assertFalse(SqlQueryUtils.castToBoolean("no")); Assert.assertFalse(SqlQueryUtils.castToBoolean("f")); Assert.assertFalse(SqlQueryUtils.castToBoolean("false")); Assert.assertFalse(SqlQueryUtils.castToBoolean("0")); Assert.assertTrue(SqlQueryUtils.castToBoolean("YeS")); Assert.assertFalse(SqlQueryUtils.castToBoolean("")); Assert.assertFalse(SqlQueryUtils.castToBoolean("asdfafgsagareg")); } }