jenkins.plugins.coverity.CoverityTool.CovCommitDefectsCommandTest.java Source code

Java tutorial

Introduction

Here is the source code for jenkins.plugins.coverity.CoverityTool.CovCommitDefectsCommandTest.java

Source

/*******************************************************************************
 * Copyright (c) 2017 Synopsys, Inc
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Synopsys, Inc - initial implementation and documentation
 *******************************************************************************/
package jenkins.plugins.coverity.CoverityTool;

import jenkins.plugins.coverity.*;
import jenkins.plugins.coverity.Utils.CoverityPublisherBuilder;
import jenkins.plugins.coverity.Utils.InvocationAssistanceBuilder;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class CovCommitDefectsCommandTest extends CommandTestBase {

    @Test
    public void prepareCommandTest() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 0);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withCimStream(cimStream)
                .withInvocationAssistance(invocationAssistance).build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--port", "8080", "--stream", "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addMisraTest() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 0);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder()
                .withMisraConfigFile("MISRA_cpp1008_1.config").build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withCimStream(cimStream)
                .withInvocationAssistance(invocationAssistance).build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_INDIO);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--port", "8080", "--stream", "TestStream", "--user", "TestUser", "--misra-only" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addDataPortTest() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 1234);
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withCimStream(cimStream)
                .withInvocationAssistance(invocationAssistance).build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--dataport", "1234", "--stream", "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addDataPortTest_WithSslConfiguration() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                true, 1234);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        SSLConfigurations sslConfigurations = new SSLConfigurations(true, null);
        sslConfigurations.setCertFileName("TestCertFile");

        CoverityPublisher.DescriptorImpl descriptor = mock(CoverityPublisher.DescriptorImpl.class);
        CoverityPublisher publisher = mock(CoverityPublisher.class);

        when(publisher.getDescriptor()).thenReturn(descriptor);
        when(publisher.getCimStream()).thenReturn(cimStream);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(descriptor.getSslConfigurations()).thenReturn(sslConfigurations);

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--ssl", "--dataport", "1234", "--on-new-cert", "trust", "--cert", "TestCertFile", "--stream",
                "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addDataPortTest_WithIndio() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                true, 1234);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        SSLConfigurations sslConfigurations = new SSLConfigurations(true, null);
        sslConfigurations.setCertFileName("TestCertFile");

        CoverityPublisher.DescriptorImpl descriptor = mock(CoverityPublisher.DescriptorImpl.class);
        CoverityPublisher publisher = mock(CoverityPublisher.class);

        when(publisher.getDescriptor()).thenReturn(descriptor);
        when(publisher.getCimStream()).thenReturn(cimStream);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(descriptor.getSslConfigurations()).thenReturn(sslConfigurations);

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_INDIO);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--dataport", "1234", "--stream", "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addHttpsPortTest() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                true, 0);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        SSLConfigurations sslConfigurations = new SSLConfigurations(true, null);
        sslConfigurations.setCertFileName("TestCertFile");

        CoverityPublisher.DescriptorImpl descriptor = mock(CoverityPublisher.DescriptorImpl.class);
        CoverityPublisher publisher = mock(CoverityPublisher.class);

        when(publisher.getDescriptor()).thenReturn(descriptor);
        when(publisher.getCimStream()).thenReturn(cimStream);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(descriptor.getSslConfigurations()).thenReturn(sslConfigurations);

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--ssl", "--https-port", "8080", "--on-new-cert", "trust", "--cert", "TestCertFile", "--stream",
                "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addHttpsPortTest_WithIndio() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                true, 0);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().build();
        SSLConfigurations sslConfigurations = new SSLConfigurations(true, null);
        sslConfigurations.setCertFileName("TestCertFile");

        CoverityPublisher.DescriptorImpl descriptor = mock(CoverityPublisher.DescriptorImpl.class);
        CoverityPublisher publisher = mock(CoverityPublisher.class);

        when(publisher.getDescriptor()).thenReturn(descriptor);
        when(publisher.getCimStream()).thenReturn(cimStream);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(publisher.getInvocationAssistance()).thenReturn(invocationAssistance);
        when(descriptor.getSslConfigurations()).thenReturn(sslConfigurations);

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_INDIO);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--https-port", "8080", "--stream", "TestStream", "--user", "TestUser" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addCommitArgumentsTest() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 0);

        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder()
                .withCommitArguments("AdditionalCommitArguments").build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withCimStream(cimStream)
                .withInvocationAssistance(invocationAssistance).build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        setExpectedArguments(new String[] { "cov-commit-defects", "--dir", "TestDir", "--host", "Localhost",
                "--port", "8080", "--stream", "TestStream", "--user", "TestUser", "AdditionalCommitArguments" });
        covCommitDefectsCommand.runCommand();
        assertEquals("TestPassword", envVars.get("COVERITY_PASSPHRASE"));
        consoleLogger.verifyLastMessage(
                "[Coverity] cov-commit-defects command line arguments: " + actualArguments.toString());
    }

    @Test
    public void addCommitArgumentsTest_WithParseException() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);

        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 0);
        InvocationAssistance invocationAssistance = new InvocationAssistanceBuilder().withCommitArguments("\'")
                .build();
        CoverityPublisher publisher = new CoverityPublisherBuilder().withCimStream(cimStream)
                .withInvocationAssistance(invocationAssistance).build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        try {
            covCommitDefectsCommand.runCommand();
            fail("RuntimeException should have been thrown");
        } catch (RuntimeException e) {
            assertEquals("ParseException occurred during tokenizing the cov-commit-defect commit arguments.",
                    e.getMessage());
        }
    }

    @Test
    public void doesNotExecute_WithoutInvocationAssistance() throws IOException, InterruptedException {
        CIMStream cimStream = new CIMStream("TestInstance", "TestProject", "TestStream", null);
        CIMInstance cimInstance = new CIMInstance("TestInstance", "Localhost", 8080, "TestUser", "TestPassword",
                false, 0);
        CoverityPublisher publisher = new CoverityPublisherBuilder().build();

        Command covCommitDefectsCommand = new CovCommitDefectsCommand(build, launcher, listener, publisher,
                StringUtils.EMPTY, envVars, cimStream, cimInstance, CoverityVersion.VERSION_JASPER);
        covCommitDefectsCommand.runCommand();
        verifyNumberOfExecutedCommands(0);
    }
}