-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added ability to attach arbitrary JSON metadata to stubs, and to find…
… and delete stubs based on metadata content
- Loading branch information
1 parent
f52855a
commit 087fefa
Showing
21 changed files
with
411 additions
and
42 deletions.
There are no files selected for viewing
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
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
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
19 changes: 19 additions & 0 deletions
19
src/main/java/com/github/tomakehurst/wiremock/admin/FindStubMappingsByMetadataTask.java
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.github.tomakehurst.wiremock.admin; | ||
|
||
import com.github.tomakehurst.wiremock.admin.model.ListStubMappingsResult; | ||
import com.github.tomakehurst.wiremock.admin.model.PathParams; | ||
import com.github.tomakehurst.wiremock.common.Json; | ||
import com.github.tomakehurst.wiremock.core.Admin; | ||
import com.github.tomakehurst.wiremock.http.Request; | ||
import com.github.tomakehurst.wiremock.http.ResponseDefinition; | ||
import com.github.tomakehurst.wiremock.matching.StringValuePattern; | ||
|
||
public class FindStubMappingsByMetadataTask implements AdminTask { | ||
|
||
@Override | ||
public ResponseDefinition execute(Admin admin, Request request, PathParams pathParams) { | ||
StringValuePattern pattern = Json.read(request.getBodyAsString(), StringValuePattern.class); | ||
ListStubMappingsResult stubMappings = admin.findAllStubsByMetadata(pattern); | ||
return ResponseDefinition.okForJson(stubMappings); | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
src/main/java/com/github/tomakehurst/wiremock/admin/RemoveStubMappingsByMetadataTask.java
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.github.tomakehurst.wiremock.admin; | ||
|
||
import com.github.tomakehurst.wiremock.admin.model.PathParams; | ||
import com.github.tomakehurst.wiremock.common.Json; | ||
import com.github.tomakehurst.wiremock.core.Admin; | ||
import com.github.tomakehurst.wiremock.http.Request; | ||
import com.github.tomakehurst.wiremock.http.ResponseDefinition; | ||
import com.github.tomakehurst.wiremock.matching.StringValuePattern; | ||
|
||
public class RemoveStubMappingsByMetadataTask implements AdminTask { | ||
|
||
@Override | ||
public ResponseDefinition execute(Admin admin, Request request, PathParams pathParams) { | ||
StringValuePattern pattern = Json.read(request.getBodyAsString(), StringValuePattern.class); | ||
admin.removeStubsByMetadata(pattern); | ||
return ResponseDefinition.okEmptyJson(); | ||
} | ||
} |
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
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
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
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
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
86 changes: 86 additions & 0 deletions
86
src/main/java/com/github/tomakehurst/wiremock/common/Metadata.java
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package com.github.tomakehurst.wiremock.common; | ||
|
||
import com.google.common.collect.ImmutableList; | ||
import com.google.common.collect.ImmutableMap; | ||
|
||
import java.util.LinkedHashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import static com.google.common.base.Preconditions.checkArgument; | ||
|
||
public class Metadata extends LinkedHashMap<String, Object> { | ||
|
||
public Metadata() { | ||
} | ||
|
||
public Metadata(Map<? extends String, ?> data) { | ||
super(data); | ||
} | ||
|
||
public Integer getInt(String key) { | ||
return checkValidityAndCast(key, Integer.class); | ||
} | ||
|
||
public Boolean getBoolean(String key) { | ||
return checkValidityAndCast(key, Boolean.class); | ||
} | ||
|
||
public String getString(String key) { | ||
return checkValidityAndCast(key, String.class); | ||
} | ||
|
||
public List<?> getList(String key) { | ||
return checkValidityAndCast(key, List.class); | ||
} | ||
|
||
@SuppressWarnings("unchecked") | ||
public Metadata getMetadata(String key) { | ||
checkKeyPresent(key); | ||
checkArgument(Map.class.isAssignableFrom(get(key).getClass()), key + " is not a map"); | ||
return new Metadata((Map<String, ?>) get(key)); | ||
} | ||
|
||
@SuppressWarnings("unchecked") | ||
private <T> T checkValidityAndCast(String key, Class<T> type) { | ||
checkKeyPresent(key); | ||
checkArgument(type.isAssignableFrom(get(key).getClass()), key + " is not of type " + type.getSimpleName()); | ||
return (T) get(key); | ||
} | ||
|
||
private void checkKeyPresent(String key) { | ||
checkArgument(containsKey(key), key + "' not present"); | ||
} | ||
|
||
public static Builder metadata() { | ||
return new Builder(); | ||
} | ||
|
||
public static class Builder { | ||
|
||
private final ImmutableMap.Builder<String, Object> mapBuilder; | ||
|
||
public Builder() { | ||
this.mapBuilder = ImmutableMap.builder(); | ||
} | ||
|
||
public Builder attr(String key, Object value) { | ||
mapBuilder.put(key, value); | ||
return this; | ||
} | ||
|
||
public Builder list(String key, Object... values) { | ||
mapBuilder.put(key, ImmutableList.copyOf(values)); | ||
return this; | ||
} | ||
|
||
public Builder attr(String key, Metadata.Builder metadataBuilder) { | ||
mapBuilder.put(key, metadataBuilder.build()); | ||
return this; | ||
} | ||
|
||
public Metadata build() { | ||
return new Metadata(mapBuilder.build()); | ||
} | ||
} | ||
} |
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
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
Oops, something went wrong.