package hudson.plugins.starteam.integration; import hudson.plugins.starteam.StarTeamConnection; import hudson.plugins.starteam.StarTeamFunctions; import hudson.plugins.starteam.StarTeamSCMException; import hudson.plugins.starteam.StarTeamViewSelector; import java.io.File; import java.text.ParseException; import java.util.Collection; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.starbase.starteam.Folder; public class StarTeamViewSelectorIntegrationTest { /** * starteam connection */ private StarTeamConnection starTeamConnection ; /** * directory to use to perform the checkout. */ private File parentDirectory ; private String labelName; private String promotionName; private String changeDate; private String hostName; private int port; private String projectName; private String viewName; private String folderName; private String userName; private String password; /** * initalise integration starteam connection * @throws StarTeamSCMException */ @Before public void setUp() throws StarTeamSCMException { hostName = System.getProperty("test.starteam.hostname", "10.170.12.246"); port = Integer.parseInt(System.getProperty("test.starteam.hostport", "55201")); projectName = System.getProperty("test.starteam.projectname", "NGBL"); viewName = System.getProperty("test.starteam.viewname", "NGBL"); folderName = System.getProperty("test.starteam.foldername", "NGBL/source/ant"); userName = System.getProperty("test.starteam.username", ""); password = System.getProperty("test.starteam.password", ""); labelName = System.getProperty("test.starteam.labelname", "hudsonTestLabel"); promotionName = System.getProperty("test.starteam.promotionname", "hudsonPromotionState"); changeDate = System.getProperty("test.starteam.changedate", "2010/7/14 00:00:00"); //create the default folder parentDirectory = new File("hudson-temp-directory") ; if (! parentDirectory.exists()) { if (! parentDirectory.mkdir()) { Assert.fail( "unable to create the directory" ) ; } } } @After public void tearDown() { starTeamConnection.close() ; } /** * By default the selector should pick CURRENT * @throws StarTeamSCMException */ @Test public final void testCurrent() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector(null,null); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(-1) ; Folder rootFolder = starTeamConnection.getRootFolder(); Collection<com.starbase.starteam.File> starteamFiles = StarTeamFunctions.listAllFiles(rootFolder, parentDirectory); Assert.assertNotNull(starteamFiles) ; Assert.assertTrue( starteamFiles.size() > 0 ) ; starTeamConnection.close() ; } /** * Label should not be found */ @Test (expected=StarTeamSCMException.class) public final void testMissingLabel() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector("xyzzy-You Are a Sharlatan","LABEL"); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(1) ; Assert.fail("Missing label should cause exeception: 'Couldn't find label [...] in view ...'"); } /** * Label should be accepted */ @Test public final void testLabels() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector(labelName,"LABEL"); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(-1) ; Folder rootFolder = starTeamConnection.getRootFolder(); Collection<com.starbase.starteam.File> starteamFiles = StarTeamFunctions.listAllFiles(rootFolder, parentDirectory); Assert.assertNotNull(starteamFiles) ; Assert.assertTrue( starteamFiles.size() > 0 ) ; starTeamConnection.close() ; } /** * Time should be in correct format */ @Test public final void testTimeValue() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector(changeDate,"TIME"); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(-1) ; Folder rootFolder = starTeamConnection.getRootFolder(); Collection<com.starbase.starteam.File> starteamFiles = StarTeamFunctions.listAllFiles(rootFolder, parentDirectory); Assert.assertNotNull(starteamFiles) ; Assert.assertTrue( starteamFiles.size() > 0 ) ; starTeamConnection.close() ; } @Test (expected = com.starbase.starteam.ServerException.class) public final void testTimeBeforeTime() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector("1970/1/1 00:00:00","TIME"); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(-1) ; Assert.fail("Time before folder creation should cause exeception: 'The reference view is no longer available. Its root folder has been deleted from the parent view.'"); } /** * Promotion label should be accepted */ @Test public final void testPromotionValue() throws ParseException, StarTeamSCMException { StarTeamViewSelector selector = new StarTeamViewSelector(promotionName,"PROMOTION"); starTeamConnection = new StarTeamConnection( hostName, port, userName, password, projectName, viewName, folderName, selector) ; starTeamConnection.initialize(-1) ; Folder rootFolder = starTeamConnection.getRootFolder(); Collection<com.starbase.starteam.File> starteamFiles = StarTeamFunctions.listAllFiles(rootFolder, parentDirectory); Assert.assertNotNull(starteamFiles) ; Assert.assertTrue( starteamFiles.size() > 0 ) ; starTeamConnection.close() ; } }