package tests; import org.junit.After; import org.junit.Assert; import org.junit.Before; import restservices.RestServices; import restservices.consume.ChangeLogListener; import restservices.consume.RestConsumeException; import restservices.consume.RestConsumer; import restservices.proxies.HttpMethod; import restservices.proxies.RequestResult; import restservices.proxies.ResponseCode; import restservices.proxies.DataServiceDefinition; import restservices.publish.ChangeLogManager; import restservices.publish.MicroflowService; import system.proxies.User; import system.proxies.UserRole; import tests.proxies.CTaskView; import tests.proxies.SecuredObject; import tests.proxies.Task; import tests.proxies.TaskCopy; import com.mendix.core.Core; import com.mendix.core.CoreException; import com.mendix.systemwideinterfaces.core.IContext; import communitycommons.StringUtils; import communitycommons.XPath; public class TestBase { DataServiceDefinition def; String baseUrl; RequestResult lastRequestResult; String username; User user; static final String PASSWORD = "Password1!"; @Before public void setup() throws CoreException { RestServices.clearServices(); IContext c = Core.createSystemContext(); XPath.create(c, Task.class).deleteAll(); XPath.create(c, TaskCopy.class).deleteAll(); XPath.create(c, SecuredObject.class).deleteAll(); XPath.create(c, DataServiceDefinition.class).deleteAll(); this.def = XPath.create(c, DataServiceDefinition.class).findOrCreateNoCommit(DataServiceDefinition.MemberNames.Name, "tasks"); def.setEnableGet(true); def.setEnableListing(true); def.setAccessRole("*"); def.setSourceEntity(Task.entityName); def.setSourceConstraint(""); def.setSourceKeyAttribute(Task.MemberNames.Nr.toString()); def.setOnPublishMicroflow("Tests.TaskToView"); def.setOnUpdateMicroflow("Tests.ViewToTask"); def.setEnableChangeLog(false); def.commit(); this.baseUrl = RestServices.getAbsoluteUrl("tasks"); } @After public void tearDown() throws CoreException { if (username != null) { XPath.create(Core.createSystemContext(), User.class).eq(User.MemberNames.Name, username).deleteAll(); username = null; user = null; } ChangeLogListener.unfollow(baseUrl); RestServices.clearServices(); def.delete(); MicroflowService.clearMicroflowServices(); } String getTestUser() throws CoreException { if (username == null){ IContext c = Core.createSystemContext(); User user = XPath.create(c, User.class).findOrCreate( User.MemberNames.Name, StringUtils.randomHash(), User.MemberNames.Password, PASSWORD); user.setUserRoles(XPath.create(c, UserRole.class).eq(UserRole.MemberNames.Name, "User").all()); user.commit(); this.username = user.getName(); this.user = user; } return username; } Task createTask(IContext c, String description, boolean done) throws CoreException { Task t = new Task(c); t.setDescription(description); t.setCompleted(done); t.commit(); return t; } CTaskView getTask(IContext c, String nr, String eTag, ResponseCode respCode, long status) throws Exception { CTaskView task = new CTaskView(c); RequestResult res = RestConsumer.getObject(c, baseUrl + nr, eTag, task.getMendixObject()); this.lastRequestResult = res; Assert.assertEquals(respCode, res.getResponseCode()); Assert.assertEquals(status, (long) res.getRawResponseCode()); return task; } void publishTask(IContext c, Task t, boolean delete) throws CoreException { if (delete) { t.delete(); ChangeLogManager.publishDelete(c, t.getMendixObject()); } else { t.commit(); ChangeLogManager.publishUpdate(c, t.getMendixObject()); } } protected void assertErrorcode(IContext context, HttpMethod method, String url, int code) throws Exception { try { RestConsumer.request(context, method, url, null, null, false); Assert.fail(); } catch(RestConsumeException e) { Assert.assertEquals(code, e.getStatus()); //Method not allowed } } }