Package org.fcrepo.server

Source Code of org.fcrepo.server.BasicServerTest

package org.fcrepo.server;

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.verifyStatic;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.util.HashMap;

import org.fcrepo.server.config.ServerConfiguration;
import org.fcrepo.server.errors.ServerInitializationException;
import org.fcrepo.server.storage.ConnectionPool;
import org.fcrepo.server.utilities.SQLUtility;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;


@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"org.slf4j.*", "org.apache.xerces.*", "javax.xml.*",
    "org.xml.sax.*", "javax.management.*"})
@PrepareForTest({SQLUtility.class})
public class BasicServerTest {

    private static TemporaryFolder tmpFolder;

    @Mock
    private Connection mockDefaultConnection;
   
    @Mock
    private Connection mockRWConnection;
   
    @Mock
    private ConnectionPool mockPool;
       
    private static File fedoraHomeFixture;
   
    private BasicServer test;
   
    @AfterClass
    public static void cleanUp() {
        if (fedoraHomeFixture != null) fedoraHomeFixture.delete();
        tmpFolder.delete();
    }

    @BeforeClass
    public static void bootstrap() throws IOException {
        tmpFolder = new TemporaryFolder();
        tmpFolder.create();
        fedoraHomeFixture = fakeFedoraHome();
    }
   
    private static File fakeFedoraHome() throws IOException {
        File fake = tmpFolder.newFolder("fedoraHome");
        System.setProperty("fedora.home", fake.getAbsolutePath());
        new File(fake, "server/management/uplaods").mkdirs();
        new File(fake, "server/logs").mkdir();
        new File(fake, "server/config").mkdir();
        File fcfg = new File(fake, "server/config/fedora.fcfg");
        FileWriter writer = new FileWriter(fcfg);
        writer.write("<xml></xml>");
        writer.close();
        return fake;
    }
   
    @Before
    public void setUp() throws Exception {
        fedoraHomeFixture = fakeFedoraHome();
       
        mockStatic(SQLUtility.class);
        when(SQLUtility.getConnectionPool(any(ServerConfiguration.class)))
        .thenReturn(mockPool);
        when(mockPool.getReadWriteConnection()).thenReturn(mockRWConnection);
        when(SQLUtility.getDefaultConnection(any(ServerConfiguration.class)))
        .thenReturn(mockDefaultConnection);
       
       
        test = new BasicServer(new HashMap<String, String>(), fedoraHomeFixture);
    }
   
    @Test
    public void testFirstRunEmptyDatabase() throws Exception {
        when(SQLUtility.getMostRecentRebuild(mockRWConnection))
        .thenReturn(-1L);
        test.checkRebuildHasRun(true);
        verifyStatic();
        SQLUtility.recordSuccessfulRebuild(
                eq(mockRWConnection), any(Long.class));
    }

    @Test
    public void testFirstRunNonemptyDatabase() throws Exception {
        long now = System.currentTimeMillis();
        when(SQLUtility.getMostRecentRebuild(mockRWConnection))
        .thenReturn(now);
        when(SQLUtility.getRebuildStatus(mockRWConnection, now)).thenReturn(true);
        test.checkRebuildHasRun(true);
        verifyStatic();
        SQLUtility.getRebuildStatus(mockRWConnection, now);
    }

    @Test(expected = ServerInitializationException.class)
    public void testSubsequentRunEmptyDatabase() throws Exception {
        when(SQLUtility.getMostRecentRebuild(mockRWConnection))
        .thenReturn(-1L);
        test.checkRebuildHasRun(false);
    }

    @Test(expected = ServerInitializationException.class)
    public void testSubsequentRunBadRebuild() throws Exception {
        long now = System.currentTimeMillis();
        when(SQLUtility.getMostRecentRebuild(mockRWConnection))
        .thenReturn(now);
        when(SQLUtility.getRebuildStatus(eq(mockRWConnection), any(Long.class)))
        .thenReturn(false);
        test.checkRebuildHasRun(false);
    }

    @Test
    public void testSubsequentRunGoodRebuild() throws Exception {
        long now = System.currentTimeMillis();
        when(SQLUtility.getMostRecentRebuild(mockRWConnection))
        .thenReturn(now);
        when(SQLUtility.getRebuildStatus(mockRWConnection, now))
        .thenReturn(true);
        test.checkRebuildHasRun(false);
        verifyStatic();
        SQLUtility.getRebuildStatus(mockRWConnection, now);
    }
}
TOP

Related Classes of org.fcrepo.server.BasicServerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.