org.sventon.web.ctrl.SubmitConfigurationsControllerTest.java Source code

Java tutorial

Introduction

Here is the source code for org.sventon.web.ctrl.SubmitConfigurationsControllerTest.java

Source

/*
 * ====================================================================
 * Copyright (c) 2005-2012 sventon project. All rights reserved.
 *
 * This software is licensed as described in the file LICENSE, which
 * you should have received as part of this distribution. The terms
 * are also available at http://www.sventon.org.
 * If newer versions of this license are posted there, you may use a
 * newer version instead, at your option.
 * ====================================================================
 */
package org.sventon.web.ctrl;

import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;
import org.quartz.impl.StdScheduler;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.servlet.ModelAndView;
import org.sventon.TestUtils;
import org.sventon.appl.Application;
import org.sventon.appl.ConfigDirectory;
import org.sventon.appl.RepositoryConfiguration;
import org.sventon.model.Credentials;

import java.io.File;

import static org.junit.Assert.*;

public class SubmitConfigurationsControllerTest {

    private ConfigDirectory configDirectory;
    private Application application;

    @Before
    public void setUp() throws Exception {
        configDirectory = TestUtils.getTestConfigDirectory();
        configDirectory.setCreateDirectories(false);
        final MockServletContext servletContext = new MockServletContext();
        servletContext.setContextPath("sventon-test");
        configDirectory.setServletContext(servletContext);
        application = new Application(configDirectory);
        application.setConfigurationFileName(TestUtils.CONFIG_FILE_NAME);
    }

    @Test
    public void testHandleRequestInternalConfigured() throws Exception {
        final MockHttpServletRequest request = new MockHttpServletRequest();
        final MockHttpServletResponse response = new MockHttpServletResponse();
        final SubmitConfigurationsController controller = new SubmitConfigurationsController();
        application.setConfigured(true);
        controller.setApplication(application);
        final ModelAndView modelAndView = controller.handleRequestInternal(request, response);
        assertEquals("error/configurationError", modelAndView.getViewName());
    }

    @Test
    public void testHandleRequestInternalNoAddedRepository() throws Exception {
        final MockHttpServletRequest request = new MockHttpServletRequest();
        final MockHttpServletResponse response = new MockHttpServletResponse();
        final SubmitConfigurationsController controller = new SubmitConfigurationsController();
        application.setConfigured(false);
        controller.setApplication(application);

        final ModelAndView modelAndView = controller.handleRequestInternal(request, response);
        assertEquals("error/configurationError", modelAndView.getViewName());
    }

    @Test
    public void testHandleRequestInternal() throws Exception {
        final MockHttpServletRequest request = new MockHttpServletRequest();
        final MockHttpServletResponse response = new MockHttpServletResponse();
        final SubmitConfigurationsController ctrl = new SubmitConfigurationsController();
        final MockServletContext servletContext = new MockServletContext();
        servletContext.setContextPath("sventon-test");
        configDirectory.setServletContext(servletContext);

        ctrl.setScheduler(new StdScheduler(null, null) {
            public void triggerJob(final String string, final String string1) {
            }
        });

        final RepositoryConfiguration repositoryConfiguration1 = new RepositoryConfiguration("testrepos1");
        repositoryConfiguration1.setRepositoryUrl("http://localhost/1");
        repositoryConfiguration1.setUserCredentials(new Credentials("user1", "abc123"));
        repositoryConfiguration1.setCacheUsed(false);
        repositoryConfiguration1.setZippedDownloadsAllowed(false);

        final RepositoryConfiguration repositoryConfiguration2 = new RepositoryConfiguration("testrepos2");
        repositoryConfiguration2.setRepositoryUrl("http://localhost/2");
        repositoryConfiguration2.setUserCredentials(new Credentials("user2", "abc123"));
        repositoryConfiguration2.setCacheUsed(false);
        repositoryConfiguration2.setZippedDownloadsAllowed(false);

        application.addConfiguration(repositoryConfiguration1);
        application.addConfiguration(repositoryConfiguration2);
        application.setConfigured(false);
        ctrl.setApplication(application);
        ctrl.setServletContext(new MockServletContext());

        final File configFile1 = new File(configDirectory.getRepositoriesDirectory(), "testrepos1");
        final File configFile2 = new File(configDirectory.getRepositoriesDirectory(), "testrepos2");

        assertFalse(configFile1.exists());
        assertFalse(configFile2.exists());

        final ModelAndView modelAndView = ctrl.handleRequestInternal(request, response);
        assertNotNull(modelAndView);
        assertNull(modelAndView.getViewName()); // Will be null as it is a redirect view.

        //File should now be written
        assertTrue(configFile1.exists());
        assertTrue(configFile2.exists());
        FileUtils.deleteDirectory(configDirectory.getConfigRootDirectory());
        assertFalse(configFile1.exists());
        assertFalse(configFile2.exists());
        assertTrue(application.isConfigured());
    }
}