use of org.xwiki.job.Job in project xwiki-platform by xwiki.
the class ExtensionManagerScriptService method getCurrentJobStatus.
/**
* Get the status of the currently executing job, if any.
*
* @return status of the currently executing job, or {@code null} if no job is being executed
*/
public JobStatus getCurrentJobStatus() {
Job job = getCurrentJobInternal();
JobStatus jobStatus;
if (job != null) {
jobStatus = job.getStatus();
if (!this.authorization.hasAccess(Right.PROGRAM)) {
jobStatus = safe(jobStatus);
}
} else {
jobStatus = null;
}
return jobStatus;
}
use of org.xwiki.job.Job in project xwiki-platform by xwiki.
the class ExtensionHistoryScriptServiceTest method replayWithoutAdmin.
@Test
public void replayWithoutAdmin() throws Exception {
InstallRequest installRequest = new InstallRequest();
installRequest.addNamespace("wiki:dev");
ExtensionJobHistoryRecord install = new ExtensionJobHistoryRecord("install", installRequest, null, null, null);
List<ExtensionJobHistoryRecord> records = Arrays.asList(install);
when(this.xcontext.getWikiId()).thenReturn("dev");
when(this.authorization.hasAccess(Right.ADMIN, new WikiReference("dev"))).thenReturn(false);
Job replayJob = mock(Job.class);
ArgumentCaptor<ReplayRequest> requestCaptor = ArgumentCaptor.forClass(ReplayRequest.class);
when(jobExecutor.execute(eq(ReplayJob.JOB_TYPE), requestCaptor.capture())).thenReturn(replayJob);
assertSame(replayJob, this.mocker.getComponentUnderTest().replay(records));
ReplayRequest request = requestCaptor.getValue();
assertTrue(request.getRecords().isEmpty());
}
use of org.xwiki.job.Job in project xwiki-platform by xwiki.
the class ExtensionHistoryScriptServiceTest method replayWithAdminButNoPR.
@Test
public void replayWithAdminButNoPR() throws Exception {
InstallRequest installRequest = new InstallRequest();
installRequest.addNamespace("wiki:drafts");
installRequest.setProperty("user.reference", new DocumentReference("drafts", "Users", "Alice"));
ExtensionJobHistoryRecord install = new ExtensionJobHistoryRecord("install", installRequest, null, null, null);
List<ExtensionJobHistoryRecord> records = Arrays.asList(install);
when(this.xcontext.getWikiId()).thenReturn("dev");
when(this.documentAccessBridge.getCurrentUserReference()).thenReturn(new DocumentReference("dev", "Users", "Bob"));
when(this.authorization.hasAccess(Right.ADMIN, new WikiReference("dev"))).thenReturn(true);
when(this.authorization.hasAccess(Right.PROGRAM)).thenReturn(false);
Job replayJob = mock(Job.class);
ArgumentCaptor<ReplayRequest> requestCaptor = ArgumentCaptor.forClass(ReplayRequest.class);
when(jobExecutor.execute(eq(ReplayJob.JOB_TYPE), requestCaptor.capture())).thenReturn(replayJob);
assertSame(replayJob, this.mocker.getComponentUnderTest().replay(records));
ReplayRequest request = requestCaptor.getValue();
assertEquals(Arrays.asList(install), request.getRecords());
assertEquals(Arrays.asList("wiki:dev"), install.getRequest().getNamespaces());
assertEquals(this.documentAccessBridge.getCurrentUserReference(), install.getRequest().getProperty("user.reference"));
}
use of org.xwiki.job.Job in project xwiki-platform by xwiki.
the class ExtensionManagerScriptServiceTest method install.
// tools
private Job install(String id, String version, String namespace) throws Throwable {
Job job = this.scriptService.install(id, version, namespace);
if (job == null) {
throw this.scriptService.getLastError();
}
job.join();
List<LogEvent> errors = job.getStatus().getLog().getLogsFrom(LogLevel.WARN);
if (!errors.isEmpty()) {
throw errors.get(0).getThrowable();
}
return job;
}
use of org.xwiki.job.Job in project xwiki-platform by xwiki.
the class ExtensionManagerScriptServiceTest method uninstall.
private Job uninstall(String id, String namespace) throws Throwable {
Job job = this.scriptService.uninstall(id, namespace);
if (job == null) {
throw this.scriptService.getLastError();
}
job.join();
List<LogEvent> errors = job.getStatus().getLog().getLogsFrom(LogLevel.WARN);
if (!errors.isEmpty()) {
throw errors.get(0).getThrowable();
}
return job;
}
Aggregations