diff --git a/core/src/test/java/com/alibaba/druid/TestUtil.java b/core/src/test/java/com/alibaba/druid/TestUtil.java index a1c41b2479..dfcc4e9d8f 100644 --- a/core/src/test/java/com/alibaba/druid/TestUtil.java +++ b/core/src/test/java/com/alibaba/druid/TestUtil.java @@ -15,6 +15,13 @@ */ package com.alibaba.druid; +import com.alibaba.druid.util.JdbcUtils; +import com.alibaba.druid.util.Utils; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.lang.management.ManagementFactory; import javax.management.MBeanServer; @@ -57,4 +64,16 @@ public class TestUtil { throw new RuntimeException("error"); } } + + public static String getResource(String path) { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + try (Reader reader = new InputStreamReader( + contextClassLoader + .getResourceAsStream(path), "UTF-8") + ){ + return Utils.read(reader); + } catch (IOException ignored) { + return null; + } + } } diff --git a/core/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallResourceTest.java b/core/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallResourceTest.java new file mode 100644 index 0000000000..7fa0cd4a1a --- /dev/null +++ b/core/src/test/java/com/alibaba/druid/bvt/filter/wall/oracle/OracleWallResourceTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.druid.bvt.filter.wall.oracle; + +import com.alibaba.druid.TestUtil; +import com.alibaba.druid.sql.PGTest; +import com.alibaba.druid.wall.Violation; +import com.alibaba.druid.wall.WallCheckResult; +import com.alibaba.druid.wall.spi.OracleWallProvider; + +import java.util.List; + +public class OracleWallResourceTest extends PGTest { + public void test_0() throws Exception { + exec_test("bvt/wall/oracle/oracle-01.sql"); + } + + public void exec_test(String resource) throws Exception { + String sql = TestUtil.getResource(resource); + OracleWallProvider provider = new OracleWallProvider(); + + WallCheckResult checkResult = provider.check(sql); + List violations = checkResult.getViolations(); + if (!violations.isEmpty()) { + fail(violations.get(0).getMessage()); + } + } + +} diff --git a/core/src/test/resources/bvt/wall/oracle/oracle-01.sql b/core/src/test/resources/bvt/wall/oracle/oracle-01.sql new file mode 100644 index 0000000000..eea894380a --- /dev/null +++ b/core/src/test/resources/bvt/wall/oracle/oracle-01.sql @@ -0,0 +1,6 @@ +declare +cnt number(16):=0; +begin + +commit; +end; \ No newline at end of file