org.wso2.carbon.attachment.mgt.test.AttachmentMgtDAOBasicOperationsTest.java Source code

Java tutorial

Introduction

Here is the source code for org.wso2.carbon.attachment.mgt.test.AttachmentMgtDAOBasicOperationsTest.java

Source

/*
 * Copyright (c) 2012, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * 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 org.wso2.carbon.attachment.mgt.test;

import junit.framework.Assert;
import junit.framework.TestCase;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.attachment.mgt.core.service.AttachmentManagerService;
import org.wso2.carbon.attachment.mgt.server.internal.AttachmentServerHolder;
import org.wso2.carbon.attachment.mgt.skeleton.AttachmentMgtException;
import org.wso2.carbon.attachment.mgt.skeleton.types.TAttachment;
import org.wso2.carbon.utils.ConfigurationContextService;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import java.io.File;

public class AttachmentMgtDAOBasicOperationsTest extends TestCase {
    /**
     * Class Logger
     */
    private static Log log = LogFactory.getLog(AttachmentMgtDAOBasicOperationsTest.class);

    protected MockAttachmentServer server;
    protected AttachmentServerHolder attachmentServerHolder;

    /**
     * This maintains an attachment id across multiple test cases written in this Test class. So
     * different test cases can refer to the same attachments.
     */
    private String attachmentID = "1";

    /**
     * This maintains a dummy attachment which is used to verify test-cases
     */
    private TAttachment dummyAttachment;

    private static final String AXIS2_XML_FILE_PATH = "src" + File.separator + "test" + File.separator
            + "resources";

    @Override
    protected void setUp() throws Exception {
        //Setup the MockAttachment-Server
        try {
            ConfigurationContext context = ConfigurationContextFactory
                    .createConfigurationContextFromFileSystem(AXIS2_XML_FILE_PATH, "axis2.xml");
            ConfigurationContextService service = new ConfigurationContextService(context, null);
            AttachmentServerHolder.getInstance().setConfigurationContextService(service);

        } catch (Exception e) {

        }
        server = new MockAttachmentServer();

        attachmentServerHolder = AttachmentServerHolder.getInstance();
        attachmentServerHolder.setAttachmentServer(server);

        server.init();
    }

    /**
     * This method tests the attachment upload functionality
     */
    public void testAttachmentDAOAddTest() {
        AttachmentManagerService service = new AttachmentManagerService();
        try {
            attachmentID = service.add(createAttachment());
            log.info("Attachment added with id : " + attachmentID);
            assertNotNull(attachmentID);
        } catch (AttachmentMgtException ex) {
            log.error(ex.getLocalizedMessage(), ex);
            Assert.fail("Attachment upload failed due to reason: " + ex.getLocalizedMessage());
        }
    }

    /**
     * This method tests whether it's possible to get the attachment-info for a given attachment id
     */
    public void testAttachmentDAOGetInfoTest() {
        AttachmentManagerService service = new AttachmentManagerService();

        try {
            TAttachment attachment = service.getAttachmentInfo(attachmentID);

            dummyAttachment = createAttachment();
            assertEquals(dummyAttachment.getName(), attachment.getName());
            assertEquals(dummyAttachment.getCreatedBy(), attachment.getCreatedBy());
            assertEquals(dummyAttachment.getContentType(), attachment.getContentType());

            log.info("Attachment information retrieved for id : " + attachment.getId());

        } catch (AttachmentMgtException e) {
            log.error(e.getLocalizedMessage(), e);
            Assert.fail("Attachment information retrieval failed due to reason: " + e.getLocalizedMessage());
        }
    }

    /**
     * This method tests whether it's possible to get the attachment-info for a given attachment url
     */
    public void testAttachmentDAOGetInfoFromURLTest() {
        AttachmentManagerService service = new AttachmentManagerService();

        try {
            //Request for the attachment using the attachment id
            TAttachment attachmentFromID = service.getAttachmentInfo(attachmentID);

            //request for the attachment using attachment url
            TAttachment attachmentFromURL = service.getAttachmentInfoFromURL(attachmentFromID.getUrl().toString());

            assertEquals(attachmentFromID.getId(), attachmentFromURL.getId());
            log.info("Attachment information retrieved for uri : " + attachmentFromURL.getUrl().toString());
        } catch (AttachmentMgtException e) {
            log.error(e.getLocalizedMessage(), e);
            Assert.fail("Attachment information retrieval failed due to reason: " + e.getLocalizedMessage());
        }
    }

    /**
     * This method tests the attachment removal functionality
     */
    public void testAttachmentDAORemoveTest() {
        AttachmentManagerService service = new AttachmentManagerService();
        try {
            if (service.remove(attachmentID)) {
                log.info("Attachment with id: " + attachmentID + " was successfully removed from data-source.");
                assertTrue("Attachment successfully has been removed from data-source.", true);
            } else {
                Assert.fail("Attachment with id: " + attachmentID + " couldn't be removed.");
            }
        } catch (AttachmentMgtException e) {
            log.error(e.getLocalizedMessage(), e);
            Assert.fail("Attachment removal failed due to reason: " + e.getLocalizedMessage());
        }
    }

    @Override
    protected void tearDown() throws Exception {
        server.shutdown();
    }

    /**
     * Creates an attachment stub bean which is consumable by the Back-End server interface
     * {@link org.wso2.carbon.attachment.mgt.skeleton.AttachmentMgtServiceSkeletonInterface}
     *
     * @return an attachment stub bean which is consumable by the Back-End server interface
     */
    private TAttachment createAttachment() {
        dummyAttachment = new TAttachment();
        dummyAttachment.setName("DummyName");
        dummyAttachment.setContentType("DummyContentType");
        dummyAttachment.setCreatedBy("DummyUser");

        DataHandler handler = new DataHandler(new FileDataSource(new File(
                "src" + File.separator + "test" + File.separator + "resources" + File.separator + "dbConfig.xml")));
        dummyAttachment.setContent(handler);

        return dummyAttachment;
    }
}