This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void whenResourceIsCreated_thenURIOfTheNewlyCreatedResourceIsDiscoverable(){ | |
// When | |
Foo unpersistedResource = new Foo( randomAlphabetic( 6 ) ); | |
Response createResponse = givenAuthenticated().contentType( MIME_JSON ) | |
.body( unpersistedResource ).post( paths.getFooURL() ); | |
final String uriOfNewlyCreatedResource = createResp | |
.getHeader( HttpHeaders.LOCATION ); | |
// Then |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Component | |
class AddLinkHeaderListener implements ApplicationListener< EntityCreated >{ | |
@Override | |
public void onApplicationEvent( final EntityCreated entityCreatedEvent ){ | |
Preconditions.checkNotNull( entityCreatedEvent ); | |
final HttpServletRequest request = entityCreatedEvent.getRequest(); | |
final HttpServletResponse response = entityCreatedEvent.getResponse(); | |
final long idOfNewEntity = entityCreatedEvent.getIdOfNewEntity(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void | |
whenInvalidPOSTIsSentToValidURIOfResource_thenAllowHeaderListsTheAllowedActions(){ | |
// Given | |
final String uriOfExistingResource = restTemplate.createResource(); | |
// When | |
Response res = givenAuthenticated().post( uriOfExistingResource ); | |
// Then |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String authenticateAsAdmin(){ | |
return this.authenticate( "eparaschiv", "eparaschiv" ); | |
} | |
public String authenticate( String username, String password ){ | |
Response response = RestAssured.given(). | |
.param( UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY, username ) | |
.param( UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY, password ) | |
.post( this.examplePaths.getLoginURL() ); | |
Preconditions.checkState( response.getStatusCode() == 302 ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void whenResourceIsRetrieved_thenURIToCreateANewResourceIsDiscoverable(){ | |
// Given | |
String uriOfNewlyCreatedResource = this.restTemplate.createResource(); | |
// When | |
Response response = this.givenAuthenticated().get( uriOfNewlyCreatedResource ); | |
// Then | |
String uriForResourceCreation = response.getHeader( "Link" ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static List< String > parseLinkHeader( String linkHeader ){ | |
Preconditions.checkNotNull( linkHeader ); | |
List< String > linkHeaders = Lists.newArrayList(); | |
String[] links = linkHeader.split( ", " ); | |
for( final String link : links ){ | |
int positionOfSeparator = link.indexOf( ';' ); | |
linkHeaders.add( link.substring( 1, positionOfSeparator - 1 ) ); | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void whenResourceIsRetrieved_thenURIToGetAllResourcesIsDiscoverable(){ | |
// Given | |
String uriOfExistingResource = restTemplate.createResource(); | |
// When | |
Response getResponse = givenAuthenticated().get( uriOfExistingResource ); | |
// Then | |
String uriToAllResources = HTTPLinkHeaderUtils.extractURIByRel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@RequestMapping( value = "admin/foo/{id}",method = RequestMethod.GET ) | |
@ResponseBody | |
public Foo get( @PathVariable( "id" ) Long id, | |
HttpServletRequest request, HttpServletResponse response ){ | |
Foo resourceById = RestPreconditions.checkNotNull( service.getById( id ) ); | |
eventPublisher.publishEvent | |
( new SingleResourceRetrieved( this, request, response ) ); | |
return resourceById; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Component | |
class ResourceCreatedDiscoverabilityListener | |
implements ApplicationListener< ResourceCreated >{ | |
@Override | |
public void onApplicationEvent( ResourceCreated resourceCreatedEvent ){ | |
Preconditions.checkNotNull( resourceCreatedEvent ); | |
HttpServletRequest request = resourceCreatedEvent.getRequest(); | |
HttpServletResponse response = resourceCreatedEvent.getResponse(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Component | |
class SingleResourceRetrievedDiscoverabilityListener | |
implements ApplicationListener< SingleResourceRetrieved >{ | |
@Override | |
public void onApplicationEvent( SingleResourceRetrieved resourceRetrievedEvent ){ | |
Preconditions.checkNotNull( resourceRetrievedEvent ); | |
HttpServletRequest request = resourceRetrievedEvent.getRequest(); | |
HttpServletResponse response = resourceRetrievedEvent.getResponse(); |