/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.home; import java.io.File; import java.util.Properties; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import static org.junit.Assert.*; public class HomeResolverTest { @Rule public TemporaryFolder folder = new TemporaryFolder(); private File validHomeDir; private File invalidHomeDir; private File missingHomeDir; @Before public void setUp() throws Exception { this.validHomeDir = this.folder.newFolder( "valid-home" ); this.invalidHomeDir = this.folder.newFile( "invalid-home" ); this.missingHomeDir = new File( this.folder.getRoot(), "missing-home" ); } @Test(expected = IllegalArgumentException.class) public void testNotSet() { resolve( null, null ); } @Test(expected = IllegalArgumentException.class) public void testInvalidHomeDir() { assertTrue( this.invalidHomeDir.exists() ); resolve( this.invalidHomeDir.getAbsolutePath(), null ); } @Test(expected = IllegalArgumentException.class) public void testMissingHomeDir() { assertFalse( this.missingHomeDir.exists() ); resolve( this.missingHomeDir.getAbsolutePath(), null ); } @Test public void testSystemProperty() { assertTrue( this.validHomeDir.exists() ); final HomeDir homeDir = resolve( this.validHomeDir.getAbsolutePath(), null ); assertNotNull( homeDir ); final File homeDirFile = homeDir.toFile(); assertNotNull( homeDirFile ); assertTrue( homeDirFile.exists() ); assertTrue( homeDirFile.isDirectory() ); assertEquals( this.validHomeDir, homeDirFile ); } @Test public void testEnvironment() { assertTrue( this.validHomeDir.exists() ); final HomeDir homeDir = resolve( null, this.validHomeDir.getAbsolutePath() ); assertNotNull( homeDir ); final File homeDirFile = homeDir.toFile(); assertNotNull( homeDirFile ); assertTrue( homeDirFile.exists() ); assertTrue( homeDirFile.isDirectory() ); assertEquals( this.validHomeDir, homeDirFile ); } private HomeDir resolve( final String propValue, final String envValue ) { final Properties props = new Properties(); if (propValue != null) { props.put( "cms.home", propValue ); } if (envValue != null) { props.put( "CMS_HOME", envValue ); } final HomeResolver resolver = new HomeResolver(); resolver.addSystemProperties( props ); return resolver.resolve(); } }