View Javadoc

1   /**
2    * Copyright (c) 2002-2011 "Neo Technology,"
3    * Network Engine for Objects in Lund AB [http://neotechnology.com]
4    *
5    * This file is part of Neo4j.
6    *
7    * Neo4j is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation, either version 3 of the License, or
10   * (at your option) any later version.
11   *
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19   */
20  package org.neo4j.server.startup.healthcheck;
21  
22  import static org.junit.Assert.assertFalse;
23  import static org.junit.Assert.assertTrue;
24  
25  import java.io.File;
26  import java.io.IOException;
27  import java.util.Properties;
28  
29  import org.junit.Test;
30  import org.neo4j.server.ServerTestUtils;
31  import org.neo4j.server.configuration.Configurator;
32  
33  public class ConfigFileMustBePresentRuleTest {
34      @Test
35      public void shouldFailIfThereIsNoSystemPropertyForConfigFile() {
36          ConfigFileMustBePresentRule rule = new ConfigFileMustBePresentRule();
37          assertFalse(rule.execute(propertiesWithoutConfigFileLocation()));
38      }
39      
40      @Test
41      public void shouldFailIfThereIsNoConfigFileWhereTheSystemPropertyPoints() throws IOException {
42          ConfigFileMustBePresentRule rule = new ConfigFileMustBePresentRule();
43          File tempFile = ServerTestUtils.createTempPropertyFile();
44          tempFile.delete();
45          
46          assertFalse(rule.execute(propertiesWithConfigFileLocation(tempFile)));
47      }
48  
49      @Test
50      public void shouldPassIfThereIsAConfigFileWhereTheSystemPropertyPoints() throws IOException {
51          File propertyFile = ServerTestUtils.createTempPropertyFile();
52          ServerTestUtils.writePropertyToFile(Configurator.DATABASE_LOCATION_PROPERTY_KEY, "/tmp/foo.db", propertyFile);
53          
54          ConfigFileMustBePresentRule rule = new ConfigFileMustBePresentRule();
55          assertTrue(rule.execute(propertiesWithConfigFileLocation(propertyFile)));
56          propertyFile.delete();
57      }
58      
59      private Properties propertiesWithoutConfigFileLocation() {
60          System.clearProperty(Configurator.NEO_SERVER_CONFIG_FILE_KEY);
61          return System.getProperties();
62      }
63      
64      private Properties propertiesWithConfigFileLocation(File propertyFile) {
65          System.setProperty(Configurator.NEO_SERVER_CONFIG_FILE_KEY, propertyFile.getAbsolutePath());
66          return System.getProperties();
67      }
68  }