/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.rest.service.api.repository;
import java.io.ByteArrayInputStream;
import org.activiti.engine.repository.Model;
import org.activiti.rest.service.BaseSpringRestTestCase;
import org.activiti.rest.service.HttpMultipartHelper;
import org.activiti.rest.service.api.RestUrls;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
/**
* @author Frederik Heremans
*/
public class ModelResourceSourceTest extends BaseSpringRestTestCase {
public void testGetModelEditorSource() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
repositoryService.addModelEditorSource(model.getId(), "This is the editor source".getBytes());
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE, model.getId()));
CloseableHttpResponse response = executeRequest(httpGet, HttpStatus.SC_OK);
// Check "OK" status
assertEquals("application/octet-stream", response.getEntity().getContentType().getValue());
assertEquals("This is the editor source", IOUtils.toString(response.getEntity().getContent()));
closeResponse(response);
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testGetModelEditorSourceNoSource() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE, model.getId()));
closeResponse(executeRequest(httpGet, HttpStatus.SC_NOT_FOUND));
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testGetModelEditorSourceExtra() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
repositoryService.addModelEditorSourceExtra(model.getId(), "This is the extra editor source".getBytes());
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE_EXTRA, model.getId()));
CloseableHttpResponse response = executeRequest(httpGet, HttpStatus.SC_OK);
// Check "OK" status
assertEquals("application/octet-stream", response.getEntity().getContentType().getValue());
assertEquals("This is the extra editor source", IOUtils.toString(response.getEntity().getContent()));
closeResponse(response);
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testGetModelEditorSourceExtraNoSource() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE_EXTRA, model.getId()));
closeResponse(executeRequest(httpGet, HttpStatus.SC_NOT_FOUND));
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testGetModelSourceUnexistingModel() throws Exception {
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE, "unexisting"));
closeResponse(executeRequest(httpGet, HttpStatus.SC_NOT_FOUND));
}
public void testGetModelSourceExtraUnexistingModel() throws Exception {
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE_EXTRA, "unexisting"));
closeResponse(executeRequest(httpGet, HttpStatus.SC_NOT_FOUND));
}
public void testSetModelEditorSource() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE, model.getId()));
httpPut.setEntity(HttpMultipartHelper.getMultiPartEntity("sourcefile", "application/octet-stream",
new ByteArrayInputStream("This is the new editor source".getBytes()), null));
closeResponse(executeBinaryRequest(httpPut, HttpStatus.SC_NO_CONTENT));
assertEquals("This is the new editor source", new String(repositoryService.getModelEditorSource(model.getId())));
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testSetModelEditorSourceExtra() throws Exception {
Model model = null;
try {
model = repositoryService.newModel();
model.setName("Model name");
repositoryService.saveModel(model);
HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE_EXTRA, model.getId()));
httpPut.setEntity(HttpMultipartHelper.getMultiPartEntity("sourcefile", "application/octet-stream",
new ByteArrayInputStream("This is the new extra editor source".getBytes()), null));
closeResponse(executeBinaryRequest(httpPut, HttpStatus.SC_NO_CONTENT));
assertEquals("This is the new extra editor source", new String(repositoryService.getModelEditorSourceExtra(model.getId())));
} finally {
try {
repositoryService.deleteModel(model.getId());
} catch(Throwable ignore) {
// Ignore, model might not be created
}
}
}
public void testSetModelSourceUnexistingModel() throws Exception {
HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE, "unexisting"));
httpPut.setEntity(new StringEntity(""));
closeResponse(executeBinaryRequest(httpPut, HttpStatus.SC_NOT_FOUND));
}
public void testSetModelSourceExtraUnexistingModel() throws Exception {
HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_MODEL_SOURCE_EXTRA, "unexisting"));
httpPut.setEntity(new StringEntity(""));
closeResponse(executeBinaryRequest(httpPut, HttpStatus.SC_NOT_FOUND));
}
}