Merge pull request #76 from BartoszMiller/mocked-server-for-tests

Enable mock web server for integration tests
This commit is contained in:
Oliver Nitzschke 2017-12-13 16:22:06 +01:00 committed by GitHub
commit 2397a9beaa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 138 additions and 0 deletions

View File

@ -42,5 +42,10 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.jadler</groupId>
<artifactId>jadler-all</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,72 @@
package jota;
import org.apache.commons.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import java.io.IOException;
import static java.nio.charset.Charset.defaultCharset;
import static net.jadler.Jadler.*;
abstract class AbstractMockServer {
IotaAPI iotaAPI;
@Before
public void setUp() {
initJadler();
iotaAPI = new IotaAPI.Builder().protocol("http").host("localhost").port(Integer.toString(port())).build();
}
@After
public void tearDown() {
closeJadler();
}
static class ApiMock {
enum HttpOperation {
REQUEST, RESPONSE
}
private IotaAPICommands command;
private String requestFileName;
private String responseFileName;
ApiMock command(IotaAPICommands command) {
this.command = command;
return this;
}
ApiMock request(String requestFileName) {
this.requestFileName = requestFileName;
return this;
}
ApiMock response(String responseFileName) {
this.responseFileName = responseFileName;
return this;
}
void build() {
onRequest()
.havingMethodEqualTo("POST")
.havingBodyEqualTo(getBody(command, requestFileName, HttpOperation.REQUEST))
.respond()
.withBody(getBody(command, responseFileName, HttpOperation.RESPONSE))
.withStatus(200);
}
private String getBody(IotaAPICommands command, String file, HttpOperation httpOperation) {
try {
String filePath = String.format("/http/%s/%s/%s.json", command.command(), httpOperation.name().toLowerCase(), file);
return IOUtils.toString(this.getClass().getResourceAsStream(filePath), defaultCharset());
} catch (IOException e) {
String msg = String.format("Cannot read HTTP %s body from file [%s] for [%s] command", httpOperation.name().toLowerCase(), file, command);
throw new IllegalArgumentException(msg);
}
}
}
}

View File

@ -0,0 +1,31 @@
package jota;
import jota.dto.response.GetBundleResponse;
import jota.error.ArgumentException;
import org.hamcrest.core.IsNull;
import org.junit.Test;
import java.io.IOException;
import static jota.IotaAPICommands.GET_TRYTES;
import static org.junit.Assert.assertThat;
public class IotaApiIntegrationTest extends AbstractMockServer {
@Test
public void shouldGetBundle() throws ArgumentException, IOException {
// given
new ApiMock().command(GET_TRYTES).request("requestTx1").response("responseTx1").build();
new ApiMock().command(GET_TRYTES).request("requestTx2").response("responseTx2").build();
new ApiMock().command(GET_TRYTES).request("requestTx3").response("responseTx3").build();
new ApiMock().command(GET_TRYTES).request("requestTx4").response("responseTx4").build();
// when
GetBundleResponse gbr = iotaAPI.getBundle("BKBALUPMEECOGEYQU9OHXTFTHV9OKEVUGHAUNNQCNETAQWIRJIKDGWSWXY9RSIMZJBPIPEIQEFEIA9999");
// then
assertThat(gbr, IsNull.notNullValue());
}
}

View File

@ -0,0 +1 @@
{"hashes":["BKBALUPMEECOGEYQU9OHXTFTHV9OKEVUGHAUNNQCNETAQWIRJIKDGWSWXY9RSIMZJBPIPEIQEFEIA9999"],"command":"getTrytes"}

View File

@ -0,0 +1 @@
{"hashes":["CTGHWLWZA9FWZOWTJ9BJEQ9NTLIOVOUISRAWVFKMRAKCFMKRXNQCC9PONVYSZDKNMKHNNFTOWLFDA9999"],"command":"getTrytes"}

View File

@ -0,0 +1 @@
{"hashes":["KEJFDCZVHJK9JAFLEHAXLCWKLBIJIKUUPWALANQVOMUERPXEFGYZICXAJVYBSTHGPWNMHRLYDSI9Z9999"],"command":"getTrytes"}

View File

@ -0,0 +1 @@
{"hashes":["IANTDYLIDDNHVQ9PBHXOYQXHIMEXTVBIXZMPQYDW9M9BUSKNXTJJGGVU9LSQEUOLRKNIPNJGITRFZ9999"],"command":"getTrytes"}

View File

@ -0,0 +1,5 @@
{
"trytes": [
"999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999ETLRSJITLDFNTYMK9KGFXVUUJSTIBWWCAKOKOWPLTNKNBGPTWFCFRAOKCHNWSABGJNSOFELOKIUFJSGWZ9RLPRK999999999999999999999L99999999999999999999999999KJKLFXD99999999999B99999999MRBSVKH9K9RPAYVWJHZYOHCHPGCYMSEAYPBGENGWF9DRHIEIFKXNGWWBGEPZQUGKRQKFLYFKNPHEUJXLYCTGHWLWZA9FWZOWTJ9BJEQ9NTLIOVOUISRAWVFKMRAKCFMKRXNQCC9PONVYSZDKNMKHNNFTOWLFDA9999IANTDYLIDDNHVQ9PBHXOYQXHIMEXTVBIXZMPQYDW9M9BUSKNXTJJGGVU9LSQEUOLRKNIPNJGITRFZ9999L99999999999999999999999999QGVBGTJIE999999999L99999999YHHEGMAERQZF9J9UNDYCNDXSD9P"
]
}

View File

@ -0,0 +1,5 @@
{
"trytes": [
"DVKGD9RX9GIYAUP9JZCEREPVDCRSHNIVJWWUWDXZVYMQLPGUOVLQMRFHNIIVUVKGQ9NLNJQGAAFKLAEDXCVKEQVKHXTXZPSWIOQR9IHNZUYMXUOUTLUPBTMTDKGBY9VA9XDPNZIN99QVNDJTVNIPMNZTKEIHUGCW9BBYICHMUQVKTOFDKHQROBVQCTHMWUZOWMDWZL9PXLSEIWLTRMP9FOUWITMSMQTRUZNNVNNDHNTJJVFD9YX9MGFRJIBASTNFWUNAUUWJEISJZ9EPPENMXKDYYB9WYWGDEOCUXSFESLQQNZUADK9QPIWSZUURYENXPVCWQAZSAOFYOFXCIKWAMQEGPZOHDUYEZQJTELCGMWXUUVETESVY9BWAHIYDRENFJTWNDCAEUIJLXRNE9RXKCLAQLRGJRUMMJLWGHISTJNANDZKCNUQVPQCDNOVKASVYRBYNDAKDVBMAFWINMMKSJEJNNZ9LJMLPOUXDU9XOXB9LBIERTIDDUGESTCR9SJTGSNUCYTJXBIJYPBQKKUEWUZCIUZJAVYVJEFSFZJNRTW9NYL9BMLOKBMDRY9RCY9LWLKSNEZVDITJJOKLPGLLLRATTTCBID9XIAPNEVMHCFTIEVLHAKXBAQGVDPDTMYNEDPGAABTMYUITVLNMSAYOASXFKIQMEGEH9JLDXWAKJACAUPMWWBPVUXQLUDDKUGYQRAGOGALONZYKVZZUVEFZDUPGMYUIFKTPDKCIMSIJXUQSSIKKHO9USDIWKZNSHTPLGEXOHEZFUH9HAHSNWXNORKSFIWVUYRQFDYGQHOPLIQDMPAMVQJP9CBLN9OHFVQWDKZXUOEETKADEDTKDPKKDMMJUKSFQWDTINDNGYHLQINSUODPVVZSUNBGYOWIAILONDBIEHMWQFUEVAOLLKTKKLGWLCJDYJ9HYWDZUWDNRYHE9KJCRJUOEVGQ9ARBQWSWHYREHUHCLMFHGDVLZMRIWJQUMOVGPIHVMZTW9UGOPUCLFIDKAISPLUKEHEC99HXPWWNUPQAFW99IQVHRGKXWRYZFMYKRBLYYNMEWAINBYZHRDJBYCHGPYDMWKTIRLXXRIAFSBVZKHXDIMJVGVR99ASNYJXEOBPBWN9ZQPC9DVTNAENYBUZPBHEP9XYEKNYKQFQOLVXUINYHSH9IK9Y99JEERLAMXJBMOI9YSMRMXLVAXUWNXJQ9FNPP9FSGKEOU9XPIAIFUZF9VCNXPZS9WVFHWOPFNSZPNSETUWKOZZPLV9TPZJFGBIVST9EQJTNNQWV9HWXTYGHBFYWBVMEDDYASGXWTLIEEUDPAGZKLNSORJOZZPTNNEXCDCVGEWZLCNNK9UHGKSFQGYHJUSFXWOPVEILAVHXSRZDQFBAOSIVTXBUIMOWNSGQECU9OGXWXVMXBAKIP9YOWPJTLGAY9NHLGJNADDX9JDVDPSQFYSJAWCNNUXFFEUBWHSGQJFR9OWCQUOSTDQZFCF9ZNNWPGALGLIIHOEJLUZSNDJEZDEAQEWAWEXUZUHKQRAORIFFGAZIJDENPCYTJKCTOVABGMXYJBMYTKMIPGZASMWND99PEXUEOELIENDTN9XTDGDMTFMLRJVOYKPWEFLUNDRWIQUDXSYVO9ODZELJWLQRCCXFITKGMFKBEGBNG9L9RTROJCRLADUUXNPPDJLYOJ9YYSBNLIMJVQHJJYWMFHYIQGSDOPWQXKEVZVVSWEPYWRLVEMDDRMACVQJVXELUVDCFQXKVOQS9XZBVNX9GTOCVVNNQ9KNZMLKSUUBJCDUA9KYLKKFVBGYKSTZUTRNUAHADWJNMOVACKWKNQOFCOJQWOVQJIAARQXDHNMYOEW9KNRTUNEXECKADS9LXCZ9LQPWAXJTBXYVMHKLIQVTYLA9AEKKICSLPLZIDHFALQBZCSOVAJSMKTHEDLKTNVGEFVCAXGIKIOLUMSFWKD9USVPFGDBLWJOAOAYIFU99ZQJBLLJCTLKVGALALWEVOTFOWZ9WKSOKSUHUWEFTCWIOKJPYDYUQMTOVANFZZ9CVJEJKZQDHS9XJHQOFLPHYAMCYMMRKDMIKVJAJUCKOGLI9CC9UEPRWK9PDYFKSZYYQOPLSNGLLUWMYWQLJXFIGSBWUXXTFTPLAVTYKWUA9SLDNGWDPPIOPYKQCZDURHRLTLE9WXYQFXHZLAYQDTXMEFGPV999IMNGORSKYKSJAJBYVXNKRBNCEG9HOKLSFGSQ9OY9DTONTNTNAGTILVUZCGVYXKEHWXLNNPJ9D9SQGWBCC9IOKIP999999999999999999999999999999999999999999999999KJKLFXD99A99999999B99999999MRBSVKH9K9RPAYVWJHZYOHCHPGCYMSEAYPBGENGWF9DRHIEIFKXNGWWBGEPZQUGKRQKFLYFKNPHEUJXLYKEJFDCZVHJK9JAFLEHAXLCWKLBIJIKUUPWALANQVOMUERPXEFGYZICXAJVYBSTHGPWNMHRLYDSI9Z9999IANTDYLIDDNHVQ9PBHXOYQXHIMEXTVBIXZMPQYDW9M9BUSKNXTJJGGVU9LSQEUOLRKNIPNJGITRFZ9999999999999999999999999999999VEUBGTJIE999999999L99999999CYHSOBXMLPOIRMNPJNFQENXDKWQ"
]
}

View File

@ -0,0 +1,5 @@
{
"trytes": [
"CPMRBNVFFVXCRYCVXDRGTJYHHSYBXRWVCYGQRWIZELWTBGWRTSOE9LETNZYKRPKZCTLMUFKASXUPETGWYN9PMJQWGUBHIDKLJWYEVJQOURFBKMPVYZONGGSM9TE9YOJIZBTLJYQHUBMAP9OE9SVMKJLWMZJACYTVGASERRZQPCGJIEXATTWCGEVDRYDSIGYEYSAPE9BEWHRXPOGEUCFJYWMTOREEFAKKQJZNRASNNPAXWVLBCBWNWOPGIICOUDDUUTUTMPZKSJXXLVIHWIRVAPBHSNODDQAEMDRGFOCOSTUYMNNLECRMYNTNMVWMHAGFLVYCGJDM9RGLSMNYPTFFS99NXREZLGUVYHXWVEYD9EWSCTQFRKMPNCJKTQLGJAOTHOWHGMWGPRSRUN9MGIAR9MHJXHAWFOQKLLA9LWLEYIFXKPMFZIKG9CGFXGDAYNXQPFLPTK9HHE9DUVNTNBXJRHJGNIQAIMLA9CWWAZWTQYSIAZGKFNUVJPLR9JRSDCOU9WAD9PISAZXN9RTZBUNQBMYEFNRCAOSXEDAGCEZFXVAFFI9QZFUWMAXJPT9MUNK9ZGPMN9HVBGCXEDOTXDHOBIYUQFDHNKDDFSQKJTKRDJKEYNLOVCXNYPMZVBDGOHBZVUKKMYXCGGQVDXLZULRP9HTOZFSJCZBGDEQYMUXOCL9UF9ZWPWNRPRMATUQCREQNWZLBXFQCQZBUYHGKEZHIURKUYJPTYGUTRRAAOVZWXZNSISKXFZYDLBBDYPEYSYPJZ9UHSHWCCHOBRBIKTSWZKKAZJ9JYSAPMPIDCZKPZADQBNLVMZTFKGVWKJWRWIYAWUICTSJNZR9SBJX9WCNEMAFKSWFFFFSVVNCFFKDRGKUTXIMCICTFVWJVAIZWSXMRPPXZCULRTQEJXMKKMVDUMSJRMDVXWUZXMGLONHPUT9SPAQRZGMWXVAGOJSTKUM99VJELECHDSGKDBBTCOXJFAIGRZGEBFZRBITHMJMODNPUHSQRNYZPMSHMEMOCFEB9VTFGOSDNWQOLBORDYGJVLEHZKFDET99GTJDD9OACHEDNPNBBILLDHTZNHBLSVADYCK9QYUZXXCBOBFYUJMMWLUBFDGAUVTHRDEXSE9WKDYTVTXAZXP9TVVCSQWNGKC9DEXJATRPTNTSWXRS9WNXMF9VYPAURDUYNRHKMCVBYR9OZN9JKJUSBOSYXXSQOBNCVDARITEOVDKJRGQQBPORFQZSAMQEKDWDUJWVA9TQETLKQUAFNQZOBKRHUSXMTMRTMCQ9PNOO9OLEQQGUTAXWBOUCNFHVJOULVXUGUZXWNPC9UWEBIPZFRDVBLLRUZJVCVFFHMGBMTUDEHFGUIATBFKBQLDPYRYACJLGCFSJNX9IEXFBHGGUCYKBRURPXUOIDMIJXSOHSBTKLRCNAYFO9TMAVFTPWSFETKJALERTUIAOIOLZZKSGEXUFEJGZRZOVSSYEPDODGPZ99S9FJSSTSRJNGNPOKJCXVTTMZWDBMVVEOLUBAKNRLPHDPBUKTQZBSZMRLEYWEQQVRYMXSWEHVPYRYODEZKIUSMQIHLG9XW9NVUJXRP9HJKXESSLMWMUWGCYSSGMJLTDJSZBKVSXFYBCASRDBJNCPCEIAQGLUETTBZFUHCLZ9MWV9NOEMDSGTYIZWUQIRSSWASTLINN9FVXLIWJBPTJBFAWZBHBXE9TH9GNBWBHXZXHZGUEYIHMOGUSIORCOLXBUQRNHFYSXAKD9TSTMFFZOOXFXD9FJVTGEQCQCXOPYDHLHKU9LJKTBVABYBHPBSPOMPUFPJPQKSDTYVVZLMAKMMMDCNTXNFREYUCOLZAB9DWAWNXQMARSVPUWIQXISWZDWGNHIMULLTLYTLFYUTLBUDEXFVCSPHZLETM9MON9NESAVUFPCPSSE9XKJZPITUGNSTOCQBTEHTIQSNBFWBOFEVZSROPFAZFENXVDMZJUAYZTTVBUBM9BYOJBPINFKXRXITVGW9QZYPJZQX9FVOVASXIBYUGNDDKZWKZCGJLLUXKDZRULUTQAQWMN9JFANYNCVBKDXTDEZXDNRNTWZQQULQQOWW9SBQQVUBLTSYRVSWHFXYUBCSLXYDNNEZVQBIUJUWWJWUEDAGTVZCYYBASKIWJKKQUJZRKQKLPFMGTMVZIXLZNXHJDEEEEQYGMFTIAITCZZXIMNGORSKYKSJAJBYVXNKRBNCEG9HOKLSFGSQ9OY9DTONTNTNAGTILVUZCGVYXKEHWXLNNPJ9D9SQGWBCC999999999999999999999999999999999999999999999999999999KJKLFXD99B99999999B99999999MRBSVKH9K9RPAYVWJHZYOHCHPGCYMSEAYPBGENGWF9DRHIEIFKXNGWWBGEPZQUGKRQKFLYFKNPHEUJXLYIANTDYLIDDNHVQ9PBHXOYQXHIMEXTVBIXZMPQYDW9M9BUSKNXTJJGGVU9LSQEUOLRKNIPNJGITRFZ9999JBXCCZEFQSYWPXIEIWVILNXKSDEUJXGB9WEZCUELELUCBMUOGFEKKCRXYPSTFNZMNPFSMHZRSTCWA9999999999999999999999999999999ANUBGTJIE999999999L99999999EVIGPYNTRUPCUXNGNBKXKLOETNE"
]
}

View File

@ -0,0 +1,5 @@
{
"trytes": [
"I9SPAM9FOR9IOTAS9ON99999IOTASPAM9DOT9COM999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TRANSACTION9CREATED9USING9FULL9NODE99999HTTP9COLON9SLASH9SLASH9NODE9ZERO9ONE9DOT9IOTATOKEN9DOT9NL9COLON9ONE9FOUR9TWO9SIX9FIVE999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999IOTASPAMFUND99999PIG9PAW9COX9LOW9BOO9ZIP9GUN9ELM9AID9TOD9MAY9GEE9WIG9TOO9COB9TUB9999999999999999999999999999HD999IOTASPAMFUND99999999999JKLFXD99999999999999999999SBXCPQJK9JLWITEGYDLEPAPYXFJJFTCVQ9EAUTASRZGKGKA9VZEDCCJPUJNWGAWDCGUGXSBDDVSHFDKQWYTOGOQNYFKIIDZCBJQOMNJSYVQJXDHZUOHGTUKWFHX9DTKNQJWJHCEBEVRLAGHYRZVPAMTFOBHNMA9999HCZBLBWH9OYATDBN9NXUTKMFLBROMGPNGKY9DZFHBPOLOCIMHOTSYFKADZUGQCQCVAHZKGIHVDZZ99999HD999IOTASPAMFUND9999999999PVJAGTJIE999999999MMMMMMMMMTA999IA99999999999999999999"
]
}

View File

@ -102,6 +102,12 @@
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.jadler</groupId>
<artifactId>jadler-all</artifactId>
<version>1.3.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>