Skip to content

Commit dccbcd6

Browse files
author
Joffry Ferrater
committed
fix response model
1 parent 4ba2493 commit dccbcd6

File tree

10 files changed

+110
-75
lines changed

10 files changed

+110
-75
lines changed

Diff for: security-expression-root/src/main/java/com/github/joffryferrater/pep/common/JsonUtility.java

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ private JsonUtility(){}
1818
}
1919

2020
public static Response getPDPResponse(String responseBody) throws IOException {
21+
System.out.println(responseBody);
2122
return pdpResponseReader.readValue(responseBody, Response.class);
2223
}
2324
}

Diff for: security-expression-root/src/main/java/com/github/joffryferrater/pep/security/AbacMethodSecurityExpressionRoot.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private Request getAllCategoriesRequest(String attributeId, List<Object> values)
7272

7373

7474
private boolean isPermitted(Response response) {
75-
final boolean isPermitted = "Permit".equals(response.getDecision());
75+
final boolean isPermitted = "Permit".equals(response.getResults().get(0).getDecision());
7676
LOGGER.debug("isPermitted: {}", isPermitted);
7777
return isPermitted;
7878
}

Diff for: security-expression-root/src/main/java/com/github/joffryferrater/pep/security/AbacWebSecurityExpressionRoot.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public boolean hasAccessToPath(String attributeId, List<Object> values) {
5151
* @return true if current user is permitted
5252
*/
5353
protected boolean isPermitted(Response response) {
54-
final boolean isPermitted = "Permit".equals(response.getDecision());
54+
final boolean isPermitted = "Permit".equals(response.getResults().get(0).getDecision());
5555
LOGGER.debug("isPermitted: {}", isPermitted);
5656
return isPermitted;
5757
}

Diff for: security-expression-root/src/test/java/com/github/joffryferrater/pep/TestBase.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import com.github.joffryferrater.pep.client.PdpClient;
1111
import com.github.joffryferrater.pep.configuration.PdpConfiguration;
1212
import com.github.joffryferrater.response.Response;
13+
import com.github.joffryferrater.response.Result;
1314
import java.util.Collection;
15+
import java.util.Collections;
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.boot.test.autoconfigure.web.client.RestClientTest;
1618
import org.springframework.http.HttpMethod;
@@ -33,13 +35,14 @@ public class TestBase {
3335
@Autowired
3436
private ObjectMapper objectMapper;
3537

36-
protected Response mockPdpResponse(String decision) {
37-
Response pdpResponse = new Response();
38+
protected Result mockResult(String decision) {
39+
Result pdpResponse = new Result();
3840
pdpResponse.setDecision(decision);
3941
return pdpResponse;
4042
}
4143

42-
protected void setExpectedPdpResponse(Response pdpResponse) throws JsonProcessingException {
44+
protected void setExpectedPdpResponse(Result result) throws JsonProcessingException {
45+
Response pdpResponse = new Response(Collections.singletonList(result));
4346
String responseInString = objectMapper.writeValueAsString(pdpResponse);
4447
this.server.expect(requestTo(configuration.getAuthorizeEndpoint()))
4548
.andExpect(method(HttpMethod.POST))

Diff for: security-expression-root/src/test/java/com/github/joffryferrater/pep/client/PdpClientTest.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.github.joffryferrater.request.Request;
1212
import com.github.joffryferrater.request.XacmlRequest;
1313
import com.github.joffryferrater.response.Response;
14+
import com.github.joffryferrater.response.Result;
1415
import java.io.IOException;
1516
import java.util.ArrayList;
1617
import java.util.Collections;
@@ -29,8 +30,8 @@ public class PdpClientTest extends TestBase {
2930

3031
@Before
3132
public void setUp() throws JsonProcessingException {
32-
Response pdpResponse = mockPdpResponse("Permit");
33-
setExpectedPdpResponse(pdpResponse);
33+
Result result = mockResult("Permit");
34+
setExpectedPdpResponse(result);
3435
}
3536

3637
@Test
@@ -51,7 +52,7 @@ public void shouldReturnPdpResponse() throws IOException {
5152
request.setAccessSubjectCategory(accessSubjectCategoryList);
5253
Response response = target.sendXacmlJsonRequest(new XacmlRequest(request));
5354

54-
assertThat(response.getDecision(), is("Permit"));
55+
assertThat(response.getResults().get(0).getDecision(), is("Permit"));
5556
}
5657

5758
}

Diff for: security-expression-root/src/test/java/com/github/joffryferrater/pep/common/JsonUtilityTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ public void shouldDeserializePdpResponse() throws IOException {
1414
final String responseInString = getPdpResponse();
1515
Response response = JsonUtility.getPDPResponse(responseInString);
1616

17-
assertThat(response.getDecision(), is("NotApplicable"));
17+
assertThat(response.getResults().get(0).getDecision(), is("NotApplicable"));
1818
}
1919

2020
private String getPdpResponse() {
21-
return "[{\n"
21+
return "{\"Response\":[{\n"
2222
+ "\t\"Decision\": \"NotApplicable\",\n"
2323
+ "\t\"Status\": {\n"
2424
+ "\t\t\"StatusCode\": {\n"
@@ -29,6 +29,6 @@ private String getPdpResponse() {
2929
+ "\t\"Obligations\": [],\n"
3030
+ "\t\"AssociatedAdvice\": [],\n"
3131
+ "\t\"Category\": []\n"
32-
+ "}]";
32+
+ "}]}";
3333
}
3434
}

Diff for: security-expression-root/src/test/java/com/github/joffryferrater/pep/security/AbacMethodSecurityExpressionRootTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.github.joffryferrater.request.Attribute;
1212
import com.github.joffryferrater.request.EnvironmentCategory;
1313
import com.github.joffryferrater.request.ResourceCategory;
14-
import com.github.joffryferrater.response.Response;
14+
import com.github.joffryferrater.response.Result;
1515
import java.util.Collections;
1616
import java.util.List;
1717
import java.util.Optional;
@@ -82,8 +82,8 @@ protected Optional<List<ResourceCategory>> addResourceCategoryRequest() {
8282

8383
@Test
8484
public void hasAccessShouldReturnTrue() throws JsonProcessingException {
85-
final Response pdpResponse = mockPdpResponse("Permit");
86-
setExpectedPdpResponse(pdpResponse);
85+
final Result result = mockResult("Permit");
86+
setExpectedPdpResponse(result);
8787

8888
final boolean hasAccess = target.hasAccessToResource("someAttributeId", Collections.singletonList("someValue"));
8989
assertThat(hasAccess, is(true));

Diff for: security-expression-root/src/test/java/com/github/joffryferrater/pep/security/AbacWebSecurityExpressionRootTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.github.joffryferrater.pep.TestBase;
88
import com.github.joffryferrater.pep.client.PdpClient;
99
import com.github.joffryferrater.response.Response;
10+
import com.github.joffryferrater.response.Result;
1011
import java.io.IOException;
1112
import java.util.Collections;
1213
import org.junit.Before;
@@ -41,8 +42,8 @@ public boolean hasIpAddress(String ipAddress) {
4142

4243
@Test
4344
public void hasAccessToPathShouldReturnTrue() throws IOException {
44-
final Response pdpResponse = mockPdpResponse("Permit");
45-
setExpectedPdpResponse(pdpResponse);
45+
final Result result = mockResult("Permit");
46+
setExpectedPdpResponse(result);
4647

4748
final String attributeId = "Attributes.resource.path";
4849
boolean hasAccessToPath = target.hasAccessToPath(attributeId, Collections.singletonList("/somePath"));
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,29 @@
11
package com.github.joffryferrater.response;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
45
import com.fasterxml.jackson.annotation.JsonProperty;
56
import java.util.List;
67

7-
@JsonInclude(JsonInclude.Include.NON_NULL)
8+
@JsonInclude(Include.NON_EMPTY)
89
public class Response {
910

10-
@JsonProperty(value = "Decision")
11-
private String decision;
11+
@JsonProperty("Response")
12+
private List<Result> results;
1213

13-
@JsonProperty(value = "Status")
14-
private Status status;
15-
16-
@JsonProperty(value = "Obligations")
17-
private List<ObligationOrAdvice> obligations;
18-
19-
@JsonProperty(value = "AssociatedAdvice")
20-
private List<ObligationOrAdvice> advice;
21-
22-
@JsonProperty(value = "Category")
23-
private List<Attributes> attributes;
24-
25-
@JsonProperty(value = "PolicyIdentifierList")
26-
private List<PolicyIdentifier> policyIdentifierList;
27-
28-
public String getDecision() {
29-
return decision;
30-
}
31-
32-
public void setDecision(String decision) {
33-
this.decision = decision;
34-
}
35-
36-
public Status getStatus() {
37-
return status;
38-
}
39-
40-
public void setStatus(Status status) {
41-
this.status = status;
14+
public Response() {
15+
//Empty constructor needed by Jackson
4216
}
4317

44-
public List<ObligationOrAdvice> getObligations() {
45-
return obligations;
18+
public Response(List<Result> results) {
19+
this.results = results;
4620
}
4721

48-
public void setObligations(List<ObligationOrAdvice> obligations) {
49-
this.obligations = obligations;
22+
public List<Result> getResults() {
23+
return results;
5024
}
5125

52-
public List<ObligationOrAdvice> getAdvice() {
53-
return advice;
26+
public void setResults(List<Result> results) {
27+
this.results = results;
5428
}
55-
56-
public void setAdvice(List<ObligationOrAdvice> advice) {
57-
this.advice = advice;
58-
}
59-
60-
public List<Attributes> getAttributes() {
61-
return attributes;
62-
}
63-
64-
public void setAttributes(List<Attributes> attributes) {
65-
this.attributes = attributes;
66-
}
67-
68-
public List<PolicyIdentifier> getPolicyIdentifierList() {
69-
return policyIdentifierList;
70-
}
71-
72-
public void setPolicyIdentifierList(List<PolicyIdentifier> policyIdentifierList) {
73-
this.policyIdentifierList = policyIdentifierList;
74-
}
75-
7629
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.github.joffryferrater.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import java.util.List;
7+
8+
@JsonInclude(Include.NON_EMPTY)
9+
public class Result {
10+
11+
@JsonProperty(value = "Decision")
12+
private String decision;
13+
14+
@JsonProperty(value = "Status")
15+
private Status status;
16+
17+
@JsonProperty(value = "Obligations")
18+
private List<ObligationOrAdvice> obligations;
19+
20+
@JsonProperty(value = "AssociatedAdvice")
21+
private List<ObligationOrAdvice> advice;
22+
23+
@JsonProperty(value = "Category")
24+
private List<Attributes> attributes;
25+
26+
@JsonProperty(value = "PolicyIdentifierList")
27+
private List<PolicyIdentifier> policyIdentifierList;
28+
29+
public String getDecision() {
30+
return decision;
31+
}
32+
33+
public void setDecision(String decision) {
34+
this.decision = decision;
35+
}
36+
37+
public Status getStatus() {
38+
return status;
39+
}
40+
41+
public void setStatus(Status status) {
42+
this.status = status;
43+
}
44+
45+
public List<ObligationOrAdvice> getObligations() {
46+
return obligations;
47+
}
48+
49+
public void setObligations(List<ObligationOrAdvice> obligations) {
50+
this.obligations = obligations;
51+
}
52+
53+
public List<ObligationOrAdvice> getAdvice() {
54+
return advice;
55+
}
56+
57+
public void setAdvice(List<ObligationOrAdvice> advice) {
58+
this.advice = advice;
59+
}
60+
61+
public List<Attributes> getAttributes() {
62+
return attributes;
63+
}
64+
65+
public void setAttributes(List<Attributes> attributes) {
66+
this.attributes = attributes;
67+
}
68+
69+
public List<PolicyIdentifier> getPolicyIdentifierList() {
70+
return policyIdentifierList;
71+
}
72+
73+
public void setPolicyIdentifierList(List<PolicyIdentifier> policyIdentifierList) {
74+
this.policyIdentifierList = policyIdentifierList;
75+
}
76+
}

0 commit comments

Comments
 (0)