/** * Copyright (c) 2008-2011 Sonatype, Inc. * All rights reserved. Includes the third-party code listed at http://www.sonatype.com/products/nexus/attributions. * * This program is free software: you can redistribute it and/or modify it only under the terms of the GNU Affero General * Public License Version 3 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 Affero General Public License Version 3 * for more details. * * You should have received a copy of the GNU Affero General Public License Version 3 along with this program. If not, see * http://www.gnu.org/licenses. * * Sonatype Nexus (TM) Open Source Version is available from Sonatype, Inc. Sonatype and Sonatype Nexus are trademarks of * Sonatype, Inc. Apache Maven is a trademark of the Apache Foundation. M2Eclipse is a trademark of the Eclipse Foundation. * All other trademarks are the property of their respective owners. */ package org.sonatype.nexus.integrationtests.nexus533; import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.lang.time.DateUtils; import org.restlet.data.Status; import org.sonatype.nexus.configuration.model.CScheduledTask; import org.sonatype.nexus.configuration.model.Configuration; import org.sonatype.nexus.integrationtests.AbstractNexusIntegrationTest; import org.sonatype.nexus.rest.model.ScheduledServiceBaseResource; import org.sonatype.nexus.rest.model.ScheduledServiceListResource; import org.sonatype.nexus.rest.model.ScheduledServiceOnceResource; import org.sonatype.nexus.test.utils.TaskScheduleUtil; import org.testng.Assert; import org.testng.annotations.Test; public abstract class AbstractNexusTasksIntegrationIT<E extends ScheduledServiceBaseResource> extends AbstractNexusIntegrationTest { public abstract E getTaskScheduled(); @Test public void doTest() throws Exception { scheduleTasks(); updateTasks(); changeScheduling(); deleteTasks(); } public void scheduleTasks() throws Exception { Status status = TaskScheduleUtil.create( getTaskScheduled() ); Assert.assertTrue( status.isSuccess() ); assertTasks(); } protected void assertTasks() throws IOException { Configuration nexusConfig = getNexusConfigUtil().getNexusConfig(); List<CScheduledTask> tasks = nexusConfig.getTasks(); Assert.assertEquals( 1, tasks.size() ); CScheduledTask task = tasks.get( 0 ); E scheduledTask = getTaskScheduled(); Assert.assertEquals( scheduledTask.getName(), task.getName() ); Assert.assertEquals( scheduledTask.getTypeId(), task.getType() ); } public void updateTasks() throws Exception { E scheduledTask = getTaskScheduled(); ScheduledServiceListResource task = TaskScheduleUtil.getTask( scheduledTask.getName() ); scheduledTask.setId( task.getId() ); updateTask( scheduledTask ); Status status = TaskScheduleUtil.update( scheduledTask ); Assert.assertTrue( status.isSuccess() ); assertTasks(); } public abstract void updateTask( E scheduledTask ); public void changeScheduling() throws Exception { E scheduledTask = getTaskScheduled(); ScheduledServiceListResource task = TaskScheduleUtil.getTask( scheduledTask.getName() ); // if we have a manual task we can't change the schedule to be manual // again if ( !task.getSchedule().equals( "manual" ) ) { ScheduledServiceBaseResource taskManual = new ScheduledServiceBaseResource(); taskManual.setId( task.getId() ); taskManual.setName( scheduledTask.getName() ); taskManual.setEnabled( true ); taskManual.setTypeId( scheduledTask.getTypeId() ); taskManual.setProperties( scheduledTask.getProperties() ); taskManual.setSchedule( "manual" ); Status status = TaskScheduleUtil.update( taskManual ); Assert.assertTrue( status.isSuccess() ); } else { ScheduledServiceOnceResource updatedTask = new ScheduledServiceOnceResource(); updatedTask.setId( task.getId() ); updatedTask.setName( scheduledTask.getName() ); updatedTask.setEnabled( task.isEnabled() ); updatedTask.setTypeId( scheduledTask.getTypeId() ); updatedTask.setProperties( scheduledTask.getProperties() ); updatedTask.setSchedule( "once" ); Date startDate = DateUtils.addDays( new Date(), 10 ); startDate = DateUtils.round( startDate, Calendar.DAY_OF_MONTH ); updatedTask.setStartDate( String.valueOf( startDate.getTime() ) ); updatedTask.setStartTime( "03:30" ); Status status = TaskScheduleUtil.update( updatedTask ); Assert.assertTrue( status.isSuccess() ); } assertTasks(); } public void deleteTasks() throws Exception { ScheduledServiceListResource task = TaskScheduleUtil.getTask( getTaskScheduled().getName() ); Status status = TaskScheduleUtil.deleteTask( task.getId() ); Assert.assertTrue( status.isSuccess() ); // delete is not working, see NEXUS-572 Configuration nexusConfig = getNexusConfigUtil().getNexusConfig(); Assert.assertTrue( nexusConfig.getTasks().isEmpty() ); } }