com.redhat.rhn.frontend.action.common.test.DownloadActionTest.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.frontend.action.common.test.DownloadActionTest.java

Source

/**
 * Copyright (c) 2009--2010 Red Hat, Inc.
 *
 * This software is licensed to you under the GNU General Public License,
 * version 2 (GPLv2). There is NO WARRANTY for this software, express or
 * implied, including the implied warranties of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
 * along with this software; if not, see
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * Red Hat trademarks are not licensed under GPLv2. No permission is
 * granted to use or replicate Red Hat trademarks that are incorporated
 * in this software or its documentation.
 */
package com.redhat.rhn.frontend.action.common.test;

import com.redhat.rhn.common.security.SessionSwap;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartSession;
import com.redhat.rhn.domain.kickstart.KickstartableTree;
import com.redhat.rhn.domain.kickstart.test.KickstartDataTest;
import com.redhat.rhn.domain.kickstart.test.KickstartSessionTest;
import com.redhat.rhn.domain.rhnpackage.Package;
import com.redhat.rhn.manager.rhnpackage.test.PackageManagerTest;
import com.redhat.rhn.testing.RhnMockStrutsTestCase;
import com.redhat.rhn.testing.TestUtils;

import java.io.File;
import java.util.Map;

import org.apache.commons.io.FileUtils;

/**
 * TinyUrlActionTest
 * @version $Rev$
 */
public class DownloadActionTest extends RhnMockStrutsTestCase {

    private KickstartData ksdata;
    private KickstartableTree tree;

    @Override
    public void setUp() throws Exception {
        super.setUp();
        ksdata = KickstartDataTest.createKickstartWithChannel(user.getOrg());
        tree = ksdata.getTree();
        tree.setBasePath("/tmp");
        File images = new File("/tmp/images");
        if (!images.exists()) {
            images.mkdir();
        }
        File boot = new File("/tmp/images/boot.iso");
        if (!boot.exists()) {
            boot.createNewFile();
        }
        setRequestPathInfo("/common/DownloadFile");
    }

    public void testKsDownload() throws Exception {
        // /ks/dist/f9-x86_64-distro/images/boot.iso
        addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/images/boot.iso");
        request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/images/boot.iso");
        actionPerform();
        assertNull(getActualForward());
        assertEquals("application/octet-stream", getResponse().getContentType());
        assertNotNull(request.getAttribute("params"));
        Map params = (Map) request.getAttribute("params");
        String filename = (String) params.get("filename");
        assertNotNull(filename);
    }

    public void testKSPackageDownload() throws Exception {
        //  /ks/dist/rhel5-i386-u2/Server/iproute-2.6.18-7.el5.i386.rpm
        Package p = PackageManagerTest.addPackageToChannel("some-package", tree.getChannel());
        String fileName = "some-package-2.13.1-6.fc9.x86_64.rpm";
        p.setPath(
                "redhat/1/c7d/some-package/2.13.1-6.fc9/" + "x86_64/c7dd5e9b6975bc7f80f2f4657260af53/" + fileName);
        TestUtils.saveAndFlush(p);

        addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/Server/" + fileName);
        request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/Server/" + fileName);
        actionPerform();
        // assertEquals("/kickstart/DownloadFile.do", getActualForward());
        assertNotNull(request.getAttribute("params"));
        // https://dhcp77-150.rhndev.redhat.com/
        // download/package/4ad2199e64aa756a21b9a33fe6f4faf355586b70/
        // 1236742778254/1/3709/alsa-utils-1.0.6-6.i386.rpm

    }

    public void testKsSessionDownload() throws Exception {
        // /ks/dist/f9-x86_64-distro/images/boot.iso
        KickstartSession ksession = KickstartSessionTest.createKickstartSession(ksdata, user);

        ksession.setKstree(tree);
        ksession.setKsdata(ksdata);

        TestUtils.saveAndFlush(ksession);
        String encodedSession = SessionSwap.encodeData(ksession.getId().toString());

        addRequestParameter("url",
                "/ks/dist/session/" + encodedSession + "/" + tree.getLabel() + "/images/boot.iso");
        request.setQueryString(
                "url=/ks/dist/session/" + encodedSession + "/" + tree.getLabel() + "/images/boot.iso");

        actionPerform();
        assertNull(getActualForward());
        assertNotNull(request.getAttribute("params"));
        Map params = (Map) request.getAttribute("params");
        // //tmp/images/boot.iso
        String filename = (String) params.get("filename");
        assertNotNull(filename);
    }

    public void testKSSessionAndPackageCount() throws Exception {
        Package p = PackageManagerTest.addPackageToChannel("some-package", tree.getChannel());
        String fileName = "some-package-2.13.1-6.fc9.x86_64.rpm";
        p.setPath(
                "redhat/1/c7d/some-package/2.13.1-6.fc9/" + "x86_64/c7dd5e9b6975bc7f80f2f4657260af53/" + fileName);
        TestUtils.saveAndFlush(p);

        FileUtils.touch(new File("/tmp/Server/" + fileName));

        KickstartSession ksession = KickstartSessionTest.createKickstartSession(ksdata, user);
        ksession.setKstree(tree);
        ksession.setKsdata(ksdata);
        TestUtils.saveAndFlush(ksession);
        String encodedSession = SessionSwap.encodeData(ksession.getId().toString());

        addRequestParameter("url",
                "/ks/dist/session/" + encodedSession + "/" + tree.getLabel() + "/Server/" + fileName);
        request.setQueryString(
                "url=/ks/dist/session/" + encodedSession + "/" + tree.getLabel() + "/Server/" + fileName);

        actionPerform();
        assertNotNull(request.getAttribute("params"));
        assertEquals(1, ksession.getPackageFetchCount().longValue());

        request.setHeader("Range", "333");
        actionPerform();
        assertEquals(1, ksession.getPackageFetchCount().longValue());

    }

    public void testDirHit() throws Exception {
        // /ks/dist/f9-x86_64-distro/images/boot.iso
        KickstartSession ksession = KickstartSessionTest.createKickstartSession(ksdata, user);
        TestUtils.saveAndFlush(ksession);
        addRequestParameter("url", "/ks/dist/" + tree.getLabel() + "/images/");
        request.setQueryString("url=/ks/dist/" + tree.getLabel() + "/images/");
        actionPerform();
        assertNull(getActualForward());
        assertEquals("text/plain", getResponse().getContentType());
    }

}