content: package org.lightfish.business.escalation.boundary;
  
  import java.util.List;
  import javax.ws.rs.client.Client;
  import javax.ws.rs.client.ClientBuilder;
  import static javax.ws.rs.client.Entity.entity;
  import javax.ws.rs.client.WebTarget;
  import javax.ws.rs.core.GenericType;
  import javax.ws.rs.core.MediaType;
  import javax.ws.rs.core.Response;
  import javax.ws.rs.core.Response.Status;
  import static org.hamcrest.CoreMatchers.is;
  import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertThat;
  import static org.junit.Assert.assertTrue;
  import org.junit.Before;
  import org.junit.Test;
  
  /**
   *
   * @author adam bien, adam-bien.com
   */
  public class ScriptingResourceIT {
  
      private Client client;
      private String baseURI = "http://localhost:8080/lightfish/resources/scripts";
      private WebTarget target;
  
      @Before
      public void init() {
          this.client = ClientBuilder.newClient();
          this.target = this.client.target(baseURI);
      }
  
      @Test
      public void crudScript() {
          String scriptName = "duke" + System.currentTimeMillis();
          Script origin = new Script(scriptName, "true", true);
  
          //PUT
          Response response = this.target.request().put(entity(origin, MediaType.APPLICATION_XML));
          assertThat(response.getStatus(), is(Status.CREATED.getStatusCode()));
          String location = (String) response.getHeaders().getFirst("Location");
          assertTrue(location.endsWith(scriptName));
  
          //GET
          Script fetched = this.client.target(location).request(MediaType.APPLICATION_XML).get(Script.class);
          assertThat(fetched, is(origin));
  
          //GET (ALL)
          GenericType<List<Script>> list = new GenericType<List<Script>>() {
          };
          List<Script> result = this.target.request(MediaType.APPLICATION_XML).get(list);
          assertFalse(result.isEmpty());
  
          //DELETE
          response = this.target.path(scriptName).request().delete();
          assertThat(response.getStatus(), is(Status.OK.getStatusCode()));
  
          //GET
          Response notExistingEntity = this.client.target(location).request(MediaType.APPLICATION_XML).get();
          assertThat(notExistingEntity.getStatus(), is(Status.NO_CONTENT.getStatusCode()));
      }
  
  }
  