Skip to content

Commit

Permalink
Merge pull request #19 from BenSayers/accept-header
Browse files Browse the repository at this point in the history
Fix bug where pact files are being requested as html instead of json
  • Loading branch information
warmuuh authored May 17, 2017
2 parents 122f5ba + 94c8de2 commit 67bd41c
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package com.github.wrm.pact.repository;

import com.github.wrm.pact.domain.PactFile;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import org.apache.maven.plugin.logging.Log;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
Expand All @@ -15,14 +21,6 @@
import java.util.Optional;
import java.util.Scanner;

import org.apache.commons.codec.binary.Base64;
import org.apache.maven.plugin.logging.Log;

import com.github.wrm.pact.domain.PactFile;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import static org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString;

public class BrokerRepositoryProvider implements RepositoryProvider {
Expand Down Expand Up @@ -76,7 +74,7 @@ public List<String> downloadPactLinks(String providerId, String tagName) throws

URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setDoInput(true);
connection.setDoOutput(true);
addBasicAuthTo(connection);
Expand Down Expand Up @@ -113,6 +111,7 @@ private void uploadPact(PactFile pact) throws IOException {
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("PUT");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("charset", StandardCharsets.UTF_8.displayName());
addBasicAuthTo(connection);
Expand Down Expand Up @@ -156,7 +155,7 @@ private void downloadPactFromLink(File targetDirectory, String link) throws Malf
FileNotFoundException {
URL url = new URL(link);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setDoInput(true);
addBasicAuthTo(connection);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,27 @@
package com.github.wrm.pact.repository;

import static java.util.Optional.empty;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import java.io.File;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import au.com.dius.pact.consumer.ConsumerPactBuilder.PactDslWithProvider.PactDslWithState;
import au.com.dius.pact.consumer.Pact;
import au.com.dius.pact.consumer.PactRule;
import au.com.dius.pact.consumer.PactVerification;
import au.com.dius.pact.model.PactFragment;
import com.github.wrm.pact.OpenPortProvider;
import com.github.wrm.pact.domain.PactFile;
import org.apache.maven.plugin.logging.SystemStreamLog;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;

import au.com.dius.pact.consumer.ConsumerPactBuilder.PactDslWithProvider.PactDslWithState;
import au.com.dius.pact.consumer.Pact;
import au.com.dius.pact.consumer.PactRule;
import au.com.dius.pact.consumer.PactVerification;
import au.com.dius.pact.model.PactFragment;
import java.io.File;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.*;

import com.github.wrm.pact.OpenPortProvider;
import com.github.wrm.pact.domain.PactFile;
import static java.util.Optional.empty;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class BrokerRepositoryProviderTest {

Expand Down Expand Up @@ -131,8 +125,8 @@ public PactFragment createFragmentForUploading(PactDslWithState builder) {
return builder
.uponReceiving("a pact file")
.path("/pacts/provider/" + PROVIDER_NAME + "/consumer/" + CONSUMER_NAME + "/version/"
+ CONSUMER_VERSION).body(pactJson).headers(getHeaders()).method("PUT").willRespondWith()
.headers(getHeaders()).status(201).body(pactJson)
+ CONSUMER_VERSION).body(pactJson).headers(getWriteRequestHeaders()).method("PUT").willRespondWith()
.headers(getResponseHeaders()).status(201).body(pactJson)
.toFragment();
}

Expand All @@ -143,52 +137,65 @@ public PactFragment createFragmentForUploadingAndTagging(PactDslWithState builde
return builder
.uponReceiving("a pact file")
.path("/pacts/provider/" + PROVIDER_NAME + "/consumer/" + CONSUMER_NAME + "/version/"
+ CONSUMER_VERSION).body(pactJson).headers(getHeaders()).method("PUT").willRespondWith()
.headers(getHeaders()).status(201).body(pactJson)
+ CONSUMER_VERSION).body(pactJson).headers(getWriteRequestHeaders()).method("PUT").willRespondWith()
.headers(getResponseHeaders()).status(201).body(pactJson)
.uponReceiving("a pact tagging request")
.path("/pacticipants/" + CONSUMER_NAME + "/versions/" + CONSUMER_VERSION + "/tags/" + TAG_NAME.get()).headers(getHeaders()).method("PUT").willRespondWith()
.headers(getHeaders()).status(201)
.path("/pacticipants/" + CONSUMER_NAME + "/versions/" + CONSUMER_VERSION + "/tags/" + TAG_NAME.get()).headers(getResponseHeaders()).method("PUT").willRespondWith()
.headers(getResponseHeaders()).status(201)
.toFragment();
}

@Pact(state = "pact-already-uploaded", provider = "broker-maven-plugin", consumer = "pact-broker")
public PactFragment createFragmentForUploadingPact(PactDslWithState builder) {

return builder.uponReceiving("an already existing pact file").path(pactPath).headers(getHeaders())
.method("PUT").willRespondWith().headers(getHeaders()).status(200).body(pactJson).toFragment();
return builder.uponReceiving("an already existing pact file").path(pactPath).headers(getWriteRequestHeaders())
.method("PUT").willRespondWith().headers(getResponseHeaders()).status(200).body(pactJson).toFragment();
}

@Pact(state = "one-provider-pact-link-present", provider = "broker-maven-plugin", consumer = "pact-broker")
public PactFragment createFragmentForDownloadingPactLinks(PactDslWithState builder) {

return builder.uponReceiving("a request for the latest provider pacts")
.path("/pacts/provider/" + PROVIDER_NAME + "/latest").headers(getHeaders()).method("GET")
.willRespondWith().headers(getHeaders()).status(200).body(providerJson).toFragment();
.path("/pacts/provider/" + PROVIDER_NAME + "/latest").headers(getReadRequestHeaders()).method("GET")
.willRespondWith().headers(getResponseHeaders()).status(200).body(providerJson).toFragment();
}

@Pact(state = "one-prod-provider-pact-link-present", provider = "broker-maven-plugin", consumer = "pact-broker")
public PactFragment createFragmentForDownloadingPactLinksForProdTag(PactDslWithState builder) {

return builder.uponReceiving("a request for the latest provider pacts for the prod tag")
.path("/pacts/provider/" + PROVIDER_NAME + "/latest/prod").headers(getHeaders()).method("GET")
.willRespondWith().headers(getHeaders()).status(200).body(providerJson).toFragment();
.path("/pacts/provider/" + PROVIDER_NAME + "/latest/prod").headers(getReadRequestHeaders()).method("GET")
.willRespondWith().headers(getResponseHeaders()).status(200).body(providerJson).toFragment();
}

@Pact(state = "one-pact-present", provider = "broker-maven-plugin", consumer = "pact-broker")
public PactFragment createFragmentForDownloadingPact(PactDslWithState builder) {

return builder.uponReceiving("a request for the latest provider pacts").path(pactPath).headers(getHeaders())
.method("GET").willRespondWith().headers(getHeaders()).status(200).body(pactJson).toFragment();
return builder.uponReceiving("a request for the latest provider pacts").path(pactPath).headers(getReadRequestHeaders())
.method("GET").willRespondWith().headers(getResponseHeaders()).status(200).body(pactJson).toFragment();
}

@Pact(state = "provider-no-pact-link-present", provider = "broker-maven-plugin", consumer = "pact-broker")
public PactFragment createFragmentForDownloadingPactLinksOfProviderWithNoPactLinkPresent(PactDslWithState builder) {
return builder.uponReceiving("a request for the latest pacts of a provider with no link present")
.path("/pacts/provider/provider-no-pact-link-present/latest").headers(getHeaders()).method("GET")
.willRespondWith().headers(getHeaders()).status(404).toFragment();
.path("/pacts/provider/provider-no-pact-link-present/latest").headers(getReadRequestHeaders()).method("GET")
.willRespondWith().headers(getResponseHeaders()).status(404).toFragment();
}

private Map<String, String> getReadRequestHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Accept", "application/json");
return headers;
}

private Map<String, String> getWriteRequestHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Accept", "application/json");
headers.put("Content-Type", "application/json");
return headers;
}

private Map<String, String> getHeaders() {
private Map<String, String> getResponseHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
return headers;
Expand Down

0 comments on commit 67bd41c

Please sign in to comment.