/*
* RHQ Management Platform
* Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.util.updater;
import java.io.File;
import org.testng.annotations.Test;
@Test
public class DeploymentPropertiesTest {
public void testSaveLoadFile() throws Exception {
DeploymentProperties props = new DeploymentProperties();
props.setDeploymentId(12345);
props.setBundleName("test-bundle-name");
props.setBundleVersion("1.0");
props.setDescription("This is a description\nof a bundle");
props.setDestinationCompliance(DestinationComplianceMode.full);
File tmpFile = File.createTempFile("deploymentPropertiesTest", ".properties");
try {
props.saveToFile(tmpFile);
DeploymentProperties propsDup = DeploymentProperties.loadFromFile(tmpFile);
assertSameProperties(props, propsDup);
assert propsDup.getDescription().equals("This is a description\nof a bundle"); // sanity check, make sure newline is OK
} finally {
tmpFile.delete();
}
}
public void testValidate() throws Exception {
DeploymentProperties props = new DeploymentProperties();
try {
props.getDeploymentId();
assert false : "Should have thrown an exception since there is no deployment ID";
} catch (Exception ok) {
// this is expected and ok
}
try {
props.getBundleName();
assert false : "Should have thrown an exception since there is no bundle name";
} catch (Exception ok) {
// this is expected and ok
}
try {
props.getBundleVersion();
assert false : "Should have thrown an exception since there is no bundle version";
} catch (Exception ok) {
// this is expected and ok
}
try {
props.setBundleName(null);
assert false : "Should have thrown an exception due to null value";
} catch (Exception ok) {
// this is expected and ok
}
try {
props.setBundleVersion(null);
assert false : "Should have thrown an exception due to null value";
} catch (Exception ok) {
// this is expected and ok
}
try {
props.setDestinationCompliance(null);
assert false : "Should have thrown an exception due to null value";
} catch (Exception ok) {
// this is expected and ok
}
File tmpFile = File.createTempFile("deploymentPropertiesTest", ".properties");
try {
try {
props.saveToFile(tmpFile);
assert false : "Should have thrown an exception since it was not valid";
} catch (Exception ok) {
// this is expected and ok
}
props.setDeploymentId(12345);
try {
props.saveToFile(tmpFile);
assert false : "Should have thrown an exception since it was not valid";
} catch (Exception ok) {
// this is expected and ok
}
props.setBundleName("a");
try {
props.saveToFile(tmpFile);
assert false : "Should have thrown an exception since it was not valid";
} catch (Exception ok) {
// this is expected and ok
}
props.setBundleVersion("1");
try {
props.saveToFile(tmpFile);
assert false : "Should have thrown an exception since it was not valid";
} catch (Exception ok) {
// this is expected and ok
}
props.setDestinationCompliance(DestinationComplianceMode.filesAndDirectories);
// we set all properties we need, it should be valid and we should be able to save it now
props.saveToFile(tmpFile);
DeploymentProperties propsDup = DeploymentProperties.loadFromFile(tmpFile);
assert propsDup.equals(props) : props + "!=" + propsDup;
} finally {
tmpFile.delete();
}
}
private void assertSameProperties(DeploymentProperties props1, DeploymentProperties props2) {
assert props2.equals(props1) : props1 + "!=" + props2;
assert props2.getDeploymentId() == props1.getDeploymentId() : props1 + "!=" + props2;
assert props2.getBundleName().equals(props1.getBundleName()) : props1 + "!=" + props2;
assert props2.getBundleVersion().equals(props1.getBundleVersion()) : props1 + "!=" + props2;
assert props2.getDescription().equals(props1.getDescription()) : props1 + "!=" + props2;
assert props2.size() == props1.size() : props1 + " is not same size as " + props2;
}
}