CloudSlang/cs-actions

View on GitHub
cs-database/src/test/java/io/cloudslang/content/database/utils/SQLUtilsTest.java

Summary

Maintainability
A
1 hr
Test Coverage
/*
 * Copyright 2019-2024 Open Text
 * This program and the accompanying materials
 * are made available under the terms of the Apache License v2.0 which accompany this distribution.
 *
 * The Apache License is available 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 io.cloudslang.content.database.utils;

import com.hp.oo.sdk.content.plugin.GlobalSessionObject;
import org.jetbrains.annotations.NotNull;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import static io.cloudslang.content.database.utils.SQLUtils.getStrColumns;
import static org.apache.commons.lang3.StringUtils.EMPTY;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;

/**
 * Created by victor on 10.01.2017.
 */
public class SQLUtilsTest {

    public static final String SQL_STATE = "s1000";
    //    public static final String MSSQL_URL = "jdbc:jtds:sqlserver://";
    public static final String DB_SERVER_IPV6_LITERAL = "2001-0db8-85a3-0042-1000-8a2e-0370-7334.ipv6-literal.net";
    public static String CUSTOM_URL = "jdbc:h2:tcp://localhost/~/test";
    @Rule
    public ExpectedException expectedEx = ExpectedException.none();

    @Test
    public void testProcessNullTerminatedString() {
        String value = SQLUtils.processNullTerminatedString("\0");
        assertEquals("null", value);

        value = SQLUtils.processNullTerminatedString("value\0");
        assertEquals("value", value);

        value = SQLUtils.processNullTerminatedString("value");
        assertEquals("value", value);

        value = SQLUtils.processNullTerminatedString(null);
        assertEquals("null", value);

        value = SQLUtils.processNullTerminatedString("");
        assertEquals("null", value);
    }

    @Test
    public void testGetIPv4OrIPv6WithSquareBracketsHost() {
        String host = SQLUtils.getIPv4OrIPv6WithSquareBracketsHost("localhost");
        assertEquals("localhost", host);

        host = SQLUtils.getIPv4OrIPv6WithSquareBracketsHost("2001:db8:85a3:0:0:8a2e:370:7334");
        assertEquals("[2001:db8:85a3:0:0:8a2e:370:7334]", host);
    }

    @Test
    public void testGetIPv4OrIPv6WithSquareBracketsHostInvalid() {
        expectedEx.expect(IllegalArgumentException.class);
        expectedEx.expectMessage("host [2001-0db8-85a3-0042-1000-8a2e-0370-7334.ipv6-literal.net  not valid");
        SQLUtils.getIPv4OrIPv6WithSquareBracketsHost("[" + DB_SERVER_IPV6_LITERAL);
    }

    @Test
    public void testGetIPv4OrIPv6WithSquareBracketsHostNull() {
        expectedEx.expect(Exception.class);
        expectedEx.expectMessage("host   not valid");
        SQLUtils.getIPv4OrIPv6WithSquareBracketsHost(null);
    }

    @Test
    public void testToString() {
        final String toString = SQLUtils.toString(new SQLException("test ex"));
        assertTrue(toString.startsWith("java.sql.SQLException: test ex"));
    }

    @Test
    public void testComputeSessionId() {
        final String sessionIdInput = SQLUtils.computeSessionId("sessionIdInput");
        assertEquals("SQLQuery:920c83186d589d993633e3e0ddf6f25b7815cccd241b5a8ef1569558b07764b7", sessionIdInput);
    }


    @Test
    public void testProcessDumpException() throws SQLException {

        SQLException sqlException = new SQLException("dump is complete") {
            @Override
            public String getSQLState() {
                return SQL_STATE;
            }
        };
        final String dumpException = SQLUtils.processDumpException(sqlException);
        assertEquals("dump is complete", dumpException);
    }

    @Test
    public void testProcessDumpExceptionNoState() throws SQLException {
        expectedEx.expect(SQLException.class);
        expectedEx.expectMessage("test");
        SQLUtils.processDumpException(new SQLException("test"));
    }

    @Test
    public void testProcessDumpExceptionNoMessage() throws SQLException {
        expectedEx.expect(SQLException.class);

        SQLException sqlException = new SQLException() {
            @Override
            public String getSQLState() {
                return SQL_STATE;
            }
        };
        SQLUtils.processDumpException(sqlException);
    }

    @Test
    public void testProcessLoadException() throws SQLException {

        SQLException sqlException = new SQLException("load is complete") {
            @Override
            public String getSQLState() {
                return SQL_STATE;
            }

        };
        final String loadException = SQLUtils.processLoadException(sqlException);
        assertEquals("load is complete", loadException);
    }

    @Test
    public void testProcessLoadExceptionNoState() throws SQLException {
        expectedEx.expect(SQLException.class);
        expectedEx.expectMessage("test");
        SQLUtils.processLoadException(new SQLException("test"));
    }

    @Test
    public void testProcessLoadExceptionNoMessage() throws SQLException {
        expectedEx.expect(SQLException.class);

        SQLException sqlException = new SQLException() {
            @Override
            public String getSQLState() {
                return SQL_STATE;
            }
        };
        SQLUtils.processLoadException(sqlException);
    }

    @Test
    public void getStrColumnsValid() throws Exception {
        final String aKey = "aKey";

        final GlobalSessionObject<Map<String, Object>> globalSessionObject = new GlobalSessionObject<>();
        final Map<String, Object> stringMap = new HashMap<>();
        stringMap.put(aKey, aKey);
        globalSessionObject.setResource(new SQLSessionResource(stringMap));

        assertThat(getStrColumns(globalSessionObject, aKey), is(aKey));
    }

}