/** * VMware Continuent Tungsten Replicator * Copyright (C) 2015 VMware, Inc. All rights reserved. * * 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. * * Initial developer(s): Csaba Simon * Contributor(s): Gilles Rayrat */ package com.continuent.tungsten.common.mysql; import java.util.ArrayList; import java.util.List; import com.continuent.tungsten.common.mysql.Utils; import junit.framework.TestCase; /** * Tests various methods of the Utils class. * * @author <a href="mailto:csaba.simon@continuent.com">Csaba Simon</a> * @author <a href="mailto:gilles.rayrat@continuent.com">Gilles Rayrat</a> * @version 1.0 */ public class UtilsTestCase extends TestCase { /** * Test generateRandomString() method. */ public void testGenerateRandomString() { assertEquals(7, Utils.generateRandomString(7).length()); } /** * Test the removeQuotes() method. */ public void testRemoveQuotes() { assertEquals(null, Utils.removeQuotes(null)); assertEquals("", Utils.removeQuotes("")); assertEquals("", Utils.removeQuotes(" ")); assertEquals("a", Utils.removeQuotes("a")); assertEquals("one", Utils.removeQuotes(" \u2018one\' ")); assertEquals("two", Utils.removeQuotes("`two\u2019 ")); assertEquals("three", Utils.removeQuotes("\u201Cthree\u00B4")); assertEquals("four", Utils.removeQuotes("\"four\u201D\"")); assertEquals("five", Utils .removeQuotes("\"\'\u0060\u00B4five\u00B4\u0060\'\"")); } public void testReplaceParametersWithQuestionMarks() { assertEquals(null, Utils.replaceParametersWithQuestionMarks(null)); assertEquals("", Utils.replaceParametersWithQuestionMarks("")); assertEquals( "select * from t where a = ?::int4", Utils .replaceParametersWithQuestionMarks("select * from t where a = $1::int4")); assertEquals( "select * from t where a = ?::int4 and b = ?::int8", Utils .replaceParametersWithQuestionMarks("select * from t where a = $1::int4 and b = $2::int8")); assertEquals( "select * from func(?::int4)", Utils .replaceParametersWithQuestionMarks("select * from func($1::int4)")); } public void testIsAuthorizedIP() { // nulls and empties assertFalse(Utils.isAuthorizedIP(null, null)); assertTrue(Utils.isAuthorizedIP("192.168.0.1", null)); assertFalse(Utils.isAuthorizedIP(null, new ArrayList<String>())); assertFalse(Utils .isAuthorizedIP("192.168.0.1", new ArrayList<String>())); List<String> authorizedIPs = new ArrayList<String>(); authorizedIPs.add("192.168.0.0/24"); // bad formats assertFalse(Utils.isAuthorizedIP("malformed IP", authorizedIPs)); assertFalse(Utils.isAuthorizedIP("192.168.1.2.3", authorizedIPs)); // regular negative assertFalse(Utils.isAuthorizedIP("192.168.1.1", authorizedIPs)); // positive assertTrue(Utils.isAuthorizedIP("192.168.0.1", authorizedIPs)); // multiple authorized IPs authorizedIPs.add("192.168.0.1/24"); assertFalse(Utils.isAuthorizedIP("192.169.1.1", authorizedIPs)); assertTrue(Utils.isAuthorizedIP("192.168.0.123", authorizedIPs)); // single address authorizedIPs.clear(); authorizedIPs.add("1.2.3.4/32"); assertFalse(Utils.isAuthorizedIP("1.2.3.5", authorizedIPs)); assertTrue(Utils.isAuthorizedIP("1.2.3.4", authorizedIPs)); // Wide nets authorizedIPs.clear(); authorizedIPs.add("123.234.0.0/16"); assertFalse(Utils.isAuthorizedIP("123.1.2.3", authorizedIPs)); assertTrue(Utils.isAuthorizedIP("123.234.2.3", authorizedIPs)); authorizedIPs.clear(); authorizedIPs.add("123.0.0.0/8"); assertFalse(Utils.isAuthorizedIP("124.1.2.3", authorizedIPs)); assertTrue(Utils.isAuthorizedIP("123.234.2.3", authorizedIPs)); } }