/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.scheduler2.quartz.test;
import org.junit.Test;
import org.junit.Ignore;
import org.pentaho.platform.api.scheduler2.SchedulerException;
import org.pentaho.platform.scheduler2.quartz.QuartzJobKey;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import static junit.framework.Assert.assertEquals;
@SuppressWarnings( "nls" )
public class QuartzJobKeyTest {
static final String TEST_USER = "testUser";
static final String TEST_JOBNAME = "testJobName";
@Test
public void testHappyPathKey() throws SchedulerException {
//
// Generate a new key based on client-provided job name and username
//
QuartzJobKey key = new QuartzJobKey( TEST_JOBNAME, TEST_USER );
assertEquals( "Quartz job group is wrong", TEST_JOBNAME, key.getJobName() );
assertEquals( "Username is wrong", TEST_USER, key.getUserName() );
//
// Now parse the jobId back into the key object
//
String jobId = key.toString();
QuartzJobKey parsedKey = QuartzJobKey.parse( jobId );
assertEquals( "Quartz job group is wrong", TEST_JOBNAME, parsedKey.getJobName() );
assertEquals( "Username is wrong", TEST_USER, parsedKey.getUserName() );
}
@Test( expected = SchedulerException.class )
public void testKeyMissingJobName() throws SchedulerException {
new QuartzJobKey( null, TEST_USER );
}
@Test( expected = SchedulerException.class )
public void testKeyMissingUsername() throws SchedulerException {
new QuartzJobKey( TEST_JOBNAME, null );
}
@Test( expected = SchedulerException.class )
public void testKeyBadJobIdParse() throws SchedulerException {
QuartzJobKey.parse( "toofewelements:1234567890" );
}
@Test
public void testKeyWithColonValues() throws SchedulerException {
testFromId( "user", "jobName with a (:) Colon", "\t" );
}
@Test
public void testOldFormat() throws SchedulerException {
testFromId( "user", "jobName can't have a colon", ":" );
}
@Test( expected = SchedulerException.class )
public void testKeyBadJobIdParse2() throws SchedulerException {
QuartzJobKey.parse( "" );
}
private void testFromId (String user, String jobName, String delimiter) throws SchedulerException {
assert(delimiter.equals("\t") || delimiter.equals( ":" ));
//
// Generate a new key based on client-provided job name and username
//
QuartzJobKey jobKey = QuartzJobKey.parse( user + delimiter + jobName + delimiter + "1234567890" );
assertEquals( "Incorrect User", user, jobKey.getUserName() );
assertEquals( "Incorrect Job Name", jobName, jobKey.getJobName() );
//
// Now parse the jobId back into the key object (should always be tab delimited)
//
String jobId = jobKey.toString();
assertEquals( "Incorrect Returned Job Id", user + "\t" + jobName + "\t" + "1234567890" , jobId);
}
static class FakeJob implements Job {
public void execute( JobExecutionContext arg0 ) throws JobExecutionException {
// TODO Auto-generated method stub
}
}
}