package de.ahus1.lottery.adapter.dropwizard.state;
import de.ahus1.lottery.adapter.dropwizard.resource.DrawRequest;
import org.assertj.core.api.StrictAssertions;
import javax.ws.rs.client.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.net.URI;
import java.time.LocalDate;
import static org.assertj.core.api.StrictAssertions.assertThat;
public class DrawRessourceState {
private final URI baseUrl;
private Response response;
String accessToken;
public DrawRessourceState(URI baseUrl) {
this.baseUrl = baseUrl;
}
public DrawRessourceState givenNoToken() {
accessToken = null;
return this;
}
public DrawRessourceState givenToken(String accessToken) {
this.accessToken = accessToken;
return this;
}
public DrawRessourceState whenOpened() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target(baseUrl).path("/draw");
DrawRequest request = new DrawRequest();
request.setDate(LocalDate.now());
Invocation.Builder builder = target.request();
if(accessToken != null) {
builder.header("Authorization", "Bearer " + accessToken);
}
response = builder.post(Entity.entity(request, MediaType.APPLICATION_JSON_TYPE));
return this;
}
public void thenAccessDenied() {
assertThat(response.getStatusInfo()).isEqualTo(Response.Status.UNAUTHORIZED);
}
}