package org.wildfly.swarm.jolokia;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.wildfly.swarm.Swarm;
import org.wildfly.swarm.arquillian.CreateSwarm;
import org.wildfly.swarm.spi.api.JARArchive;
import static org.junit.Assert.assertTrue;
/**
* @author Bob McWhirter
*/
@RunWith(Arquillian.class)
public class JolokiaSecuredTest {
@Deployment(testable = false)
public static Archive deployment() {
JARArchive deployment = ShrinkWrap.create(JARArchive.class);
deployment.add(EmptyAsset.INSTANCE, "nothing");
return deployment;
}
@CreateSwarm
public static Swarm createSwarm() throws Exception {
Swarm swarm = new Swarm()
.fraction(new JolokiaFraction()
.prepareJolokiaWar(JolokiaFraction.jolokiaAccess(access -> {
// allow nobody, basically
access.host("1.1.1.1");
}))
);
return swarm;
}
@Test
public void testJolokia() throws Exception {
HttpClientBuilder builder = HttpClientBuilder.create();
CloseableHttpClient client = builder.build();
HttpUriRequest request = new HttpGet("http://localhost:8080/jolokia");
CloseableHttpResponse response = client.execute(request);
// oddly it returns a 200, with a json status of 403
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
byte[] buf = new byte[1024];
int len = 0;
StringBuilder str = new StringBuilder();
while ((len = content.read(buf)) >= 0) {
str.append(new String(buf, 0, len));
}
assertTrue(str.toString().contains("\"status\":403"));
}
}