/* * Copyright © 2016 Cask Data, Inc. * * 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 co.cask.cdap.explore.jdbc; import co.cask.cdap.common.conf.Constants; import com.google.common.collect.ImmutableMultimap; import org.junit.Assert; import org.junit.Test; /** * Tests for explore connection params. */ public class ExploreConnectionParamsTest { private static final String BASE = String.format("%s%s:%d", Constants.Explore.Jdbc.URL_PREFIX, "foobar", 10000); @Test public void testParseFetchSize() { ExploreConnectionParams connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?fetch.size=500"); Assert.assertEquals(500, connectionParams.getFetchSize()); connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?fetchSize=12asd"); Assert.assertEquals(ExploreConnectionParams.DEFAULT_FETCH_SIZE, connectionParams.getFetchSize()); } @Test public void parseConnectionUrlTest() { ExploreConnectionParams connectionParams; connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals(ImmutableMultimap.of(), connectionParams.getExtraInfos()); connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?auth.token=foo"); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals( ImmutableMultimap.of(ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "foo"), connectionParams.getExtraInfos()); connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?auth.token=foo&foo2=bar2"); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals( ImmutableMultimap.of(ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "foo"), connectionParams.getExtraInfos()); connectionParams = ExploreConnectionParams.parseConnectionUrl( BASE + "?foo2=bar2&auth.token=foo&ssl.enabled=true&verify.ssl.cert=false"); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals( ImmutableMultimap.of(ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "foo", ExploreConnectionParams.Info.SSL_ENABLED, "true", ExploreConnectionParams.Info.VERIFY_SSL_CERT, "false"), connectionParams.getExtraInfos()); connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?foo2=bar2&auth.token"); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals(ImmutableMultimap.of(), connectionParams.getExtraInfos()); connectionParams = ExploreConnectionParams.parseConnectionUrl(BASE + "?foo2=bar2&auth.token=foo,bar"); Assert.assertEquals("foobar", connectionParams.getHost()); Assert.assertEquals(10000, connectionParams.getPort()); Assert.assertEquals( ImmutableMultimap.of(ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "foo", ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "bar"), connectionParams.getExtraInfos()); // Test that we don't decode URL more than once connectionParams = ExploreConnectionParams.parseConnectionUrl( BASE + "?" + ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN.getName() + "=AgxqdWxpZW4AyIOOuPRRyJPy%2BPhR4o%2B35wl%3DAA3"); Assert.assertEquals( ImmutableMultimap.of(ExploreConnectionParams.Info.EXPLORE_AUTH_TOKEN, "AgxqdWxpZW4AyIOOuPRRyJPy+PhR4o+35wl=AA3"), connectionParams.getExtraInfos()); } }