Merge commit 'a217f1b1e6ba53fc90c12507672395ca20920672'
* commit 'a217f1b1e6ba53fc90c12507672395ca20920672': Enhanced curl commands Fixed SpringFox/SwaggerUI issue with CustomerController Ignore test failures when EVENTUATE_API_KEY_ID etc is not set Ignore test failures when EVENTUATE_API_KEY_ID etc is not set - updated e2e-tests - added new services to docker configuration
This commit is contained in:
@@ -18,6 +18,5 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
ignoreFailures true
|
ignoreFailures System.getenv("EVENTUATE_API_KEY_ID") == null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
ignoreFailures true
|
ignoreFailures System.getenv("EVENTUATE_API_KEY_ID") == null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,4 @@ dependencies {
|
|||||||
compile "net.chrisrichardson.eventstore.client:eventstore-http-stomp-client_2.10:$eventStoreClientVersion"
|
compile "net.chrisrichardson.eventstore.client:eventstore-http-stomp-client_2.10:$eventStoreClientVersion"
|
||||||
|
|
||||||
testCompile "org.springframework.boot:spring-boot-starter-test"
|
testCompile "org.springframework.boot:spring-boot-starter-test"
|
||||||
}
|
}
|
||||||
|
|
||||||
run {
|
|
||||||
environment 'EVENTUATE_API_KEY_ID', '20CAXGPA3DE56WXO2SFBUDGZ9'
|
|
||||||
environment 'EVENTUATE_API_KEY_SECRET', 'gU6n78drWCIgkgzVStvI3BhV3MfzDyjWKCN7p0PBimI'
|
|
||||||
environment 'SPRING_DATA_MONGODB_URI', 'mongodb://198.50.218.51/mydb'
|
|
||||||
}
|
|
||||||
@@ -31,9 +31,9 @@ public class CustomerController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/{id}/toaccounts", method = RequestMethod.POST)
|
@RequestMapping(value = "/{id}/toaccounts", method = RequestMethod.POST)
|
||||||
public Observable<ResponseEntity<?>> addToAccount(@PathVariable String id, @Validated @RequestBody ToAccountInfo request) {
|
public Observable<String> addToAccount(@PathVariable String id, @Validated @RequestBody ToAccountInfo request) {
|
||||||
return customerService.addToAccount(id, request)
|
return customerService.addToAccount(id, request)
|
||||||
.map(entityAndEventInfo -> ResponseEntity.ok().build());
|
.map(entityAndEventInfo -> entityAndEventInfo.entityVersion().asString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,6 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
ignoreFailures true
|
ignoreFailures System.getenv("EVENTUATE_API_KEY_ID") == null
|
||||||
|
|
||||||
environment 'EVENTUATE_API_KEY_ID', '20CAXGPA3DE56WXO2SFBUDGZ9'
|
|
||||||
environment 'EVENTUATE_API_KEY_SECRET', 'gU6n78drWCIgkgzVStvI3BhV3MfzDyjWKCN7p0PBimI'
|
|
||||||
environment 'SPRING_DATA_MONGODB_URI', 'mongodb://198.50.218.51/mydb'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,33 @@ accountsqueryside:
|
|||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET:
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
|
||||||
|
customerscommandside:
|
||||||
|
image: java:8
|
||||||
|
working_dir: /app
|
||||||
|
volumes:
|
||||||
|
- ./customers-command-side-service/build/libs:/app
|
||||||
|
command: java -jar /app/customers-command-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8083:8080"
|
||||||
|
environment:
|
||||||
|
EVENTUATE_API_KEY_ID:
|
||||||
|
EVENTUATE_API_KEY_SECRET:
|
||||||
|
|
||||||
|
customersqueryside:
|
||||||
|
image: java:8
|
||||||
|
working_dir: /app
|
||||||
|
volumes:
|
||||||
|
- ./customers-query-side-service/build/libs:/app
|
||||||
|
command: java -jar /app/customers-query-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8084:8080"
|
||||||
|
links:
|
||||||
|
- mongodb
|
||||||
|
environment:
|
||||||
|
EVENTUATE_API_KEY_ID:
|
||||||
|
EVENTUATE_API_KEY_SECRET:
|
||||||
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
|
||||||
mongodb:
|
mongodb:
|
||||||
image: mongo:3.0.4
|
image: mongo:3.0.4
|
||||||
hostname: mongodb
|
hostname: mongodb
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
package net.chrisrichardson.eventstore.examples.bank.web;
|
package net.chrisrichardson.eventstore.examples.bank.web;
|
||||||
|
|
||||||
|
|
||||||
|
import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.Address;
|
||||||
|
import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerInfo;
|
||||||
|
import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerResponse;
|
||||||
|
import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.Name;
|
||||||
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.accounts.CreateAccountRequest;
|
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.accounts.CreateAccountRequest;
|
||||||
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.accounts.CreateAccountResponse;
|
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.accounts.CreateAccountResponse;
|
||||||
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.transactions.CreateMoneyTransferRequest;
|
import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.transactions.CreateMoneyTransferRequest;
|
||||||
@@ -40,6 +44,13 @@ public class EndToEndTest {
|
|||||||
private String transactionsCommandSideBaseUrl(String path) {
|
private String transactionsCommandSideBaseUrl(String path) {
|
||||||
return makeBaseUrl(8082, path);
|
return makeBaseUrl(8082, path);
|
||||||
}
|
}
|
||||||
|
private String customersCommandSideBaseUrl(String path) {
|
||||||
|
return makeBaseUrl(8083, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String customersQuerySideBaseUrl(String path) {
|
||||||
|
return makeBaseUrl(8084, path);
|
||||||
|
}
|
||||||
|
|
||||||
RestTemplate restTemplate = new RestTemplate();
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
|
|
||||||
@@ -54,7 +65,8 @@ public class EndToEndTest {
|
|||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldCreateAccountsAndTransferMoney() {
|
public void shouldCreateCustomerAndAccountsAndTransferMoney() {
|
||||||
|
CustomerInfo customerInfo = generateCustomerInfo();
|
||||||
|
|
||||||
BigDecimal initialFromAccountBalance = new BigDecimal(500);
|
BigDecimal initialFromAccountBalance = new BigDecimal(500);
|
||||||
BigDecimal initialToAccountBalance = new BigDecimal(100);
|
BigDecimal initialToAccountBalance = new BigDecimal(100);
|
||||||
@@ -63,10 +75,16 @@ public class EndToEndTest {
|
|||||||
BigDecimal finalFromAccountBalance = initialFromAccountBalance.subtract(amountToTransfer);
|
BigDecimal finalFromAccountBalance = initialFromAccountBalance.subtract(amountToTransfer);
|
||||||
BigDecimal finalToAccountBalance = initialToAccountBalance.add(amountToTransfer);
|
BigDecimal finalToAccountBalance = initialToAccountBalance.add(amountToTransfer);
|
||||||
|
|
||||||
final CreateAccountResponse fromAccount = restTemplate.postForEntity(accountsCommandSideBaseUrl("/accounts"), new CreateAccountRequest("00000000-00000000", "My #1 Account", initialFromAccountBalance), CreateAccountResponse.class).getBody();
|
final CustomerResponse customerResponse = restTemplate.postForEntity(customersCommandSideBaseUrl("/customers"),customerInfo, CustomerResponse.class).getBody();
|
||||||
|
final String customerId = customerResponse.getId();
|
||||||
|
|
||||||
|
assertCustomerResponse(customerId, customerInfo);
|
||||||
|
|
||||||
|
|
||||||
|
final CreateAccountResponse fromAccount = restTemplate.postForEntity(accountsCommandSideBaseUrl("/accounts"), new CreateAccountRequest(customerId, "My #1 Account", initialFromAccountBalance), CreateAccountResponse.class).getBody();
|
||||||
final String fromAccountId = fromAccount.getAccountId();
|
final String fromAccountId = fromAccount.getAccountId();
|
||||||
|
|
||||||
CreateAccountResponse toAccount = restTemplate.postForEntity(accountsCommandSideBaseUrl("/accounts"), new CreateAccountRequest("00000000-00000000", "My #2 Account", initialToAccountBalance), CreateAccountResponse.class).getBody();
|
CreateAccountResponse toAccount = restTemplate.postForEntity(accountsCommandSideBaseUrl("/accounts"), new CreateAccountRequest(customerId, "My #2 Account", initialToAccountBalance), CreateAccountResponse.class).getBody();
|
||||||
String toAccountId = toAccount.getAccountId();
|
String toAccountId = toAccount.getAccountId();
|
||||||
|
|
||||||
Assert.assertNotNull(fromAccountId);
|
Assert.assertNotNull(fromAccountId);
|
||||||
@@ -107,4 +125,35 @@ public class EndToEndTest {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void assertCustomerResponse(final String customerId, final CustomerInfo customerInfo) {
|
||||||
|
eventually(
|
||||||
|
new Producer<CustomerResponse>() {
|
||||||
|
@Override
|
||||||
|
public Observable<CustomerResponse> produce() {
|
||||||
|
return Observable.just(restTemplate.getForEntity(customersQuerySideBaseUrl("/customers/" + customerId), CustomerResponse.class).getBody());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new Verifier<CustomerResponse>() {
|
||||||
|
@Override
|
||||||
|
public void verify(CustomerResponse customerResponse) {
|
||||||
|
Assert.assertEquals(customerId, customerResponse.getId());
|
||||||
|
Assert.assertEquals(customerInfo, customerResponse.getCustomerInfo());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private CustomerInfo generateCustomerInfo() {
|
||||||
|
return new CustomerInfo(
|
||||||
|
new Name("John", "Doe"),
|
||||||
|
"current@email.com",
|
||||||
|
"000-00-0000",
|
||||||
|
"1-111-111-1111",
|
||||||
|
new Address("street 1",
|
||||||
|
"street 2",
|
||||||
|
"City",
|
||||||
|
"State",
|
||||||
|
"1111111")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
55
java-spring/handy-curl-commands.sh
Executable file
55
java-spring/handy-curl-commands.sh
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#! /bin/bash -e
|
||||||
|
|
||||||
|
# Create a customer
|
||||||
|
|
||||||
|
customer=$(curl -v --data '{
|
||||||
|
"address": {
|
||||||
|
"city": "Oakland",
|
||||||
|
"state": "CA",
|
||||||
|
"street1": "1 High Street",
|
||||||
|
"zipCode": "12345"
|
||||||
|
},
|
||||||
|
"email": "foo@bar.com",
|
||||||
|
"name": {
|
||||||
|
"firstName": "John",
|
||||||
|
"lastName": "Doe"
|
||||||
|
},
|
||||||
|
"phoneNumber": "415551212",
|
||||||
|
"ssn": "123-45-6789"
|
||||||
|
}' -H "content-type: application/json" http://${DOCKER_HOST_IP?}:8083/customers)
|
||||||
|
|
||||||
|
customerId=$(echo $customer | jq -r .id)
|
||||||
|
|
||||||
|
echo customerId=$customerId
|
||||||
|
|
||||||
|
# Create account 1
|
||||||
|
|
||||||
|
account1=$(curl -v --data "{\"initialBalance\" : 500, \"customerId\" : \"$customerId\"}" -H "content-type: application/json" http://${DOCKER_HOST_IP?}:8080/accounts)
|
||||||
|
|
||||||
|
accountId1=$(echo $account1 | jq -r ".accountId")
|
||||||
|
|
||||||
|
curl -v http://${DOCKER_HOST_IP?}:8081/accounts/$accountId1
|
||||||
|
|
||||||
|
echo accountId1=$accountId1
|
||||||
|
|
||||||
|
# Create account 2
|
||||||
|
|
||||||
|
account2=$(curl -v --data "{\"initialBalance\" : 300, \"customerId\" : \"$customerId\"}" -H "content-type: application/json" http://${DOCKER_HOST_IP?}:8080/accounts)
|
||||||
|
|
||||||
|
accountId2=$(echo $account2 | jq -r ".accountId")
|
||||||
|
|
||||||
|
|
||||||
|
curl -v http://${DOCKER_HOST_IP?}:8081/accounts/$accountId2
|
||||||
|
|
||||||
|
echo accountId2=$accountId2
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
transfer=$(curl -v --data "{\"amount\" : 150,
|
||||||
|
\"fromAccountId\" : \"$accountId1\", \"toAccountId\" : \"$accountId2\"
|
||||||
|
}" -H "content-type: application/json" http://${DOCKER_HOST_IP?}:8082/transfers)
|
||||||
|
|
||||||
|
echo transfer=$transfer
|
||||||
|
|
||||||
|
|
||||||
@@ -16,6 +16,6 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
ignoreFailures true
|
ignoreFailures System.getenv("EVENTUATE_API_KEY_ID") == null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user