Skip to content

Commit 2b34ab6

Browse files
committed
Fix twilio-java helper lib policies
1 parent 7be7839 commit 2b34ab6

File tree

4 files changed

+66
-28
lines changed

4 files changed

+66
-28
lines changed

src/main/java/com/twilio/jwt/taskrouter/FilterRequirement.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.twilio.jwt.taskrouter;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
4+
5+
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
36
public enum FilterRequirement {
47
REQUIRED(true),
58
OPTIONAL(false);

src/main/java/com/twilio/jwt/taskrouter/Policy.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ public class Policy {
2727
private final HttpMethod method;
2828

2929
@JsonProperty("query_filter")
30-
@JsonSerialize(using = FilterRequirementSerializer.class)
3130
private final Map<String, FilterRequirement> queryFilter;
3231

3332
@JsonProperty("post_filter")
34-
@JsonSerialize(using = FilterRequirementSerializer.class)
3533
private final Map<String, FilterRequirement> postFilter;
3634

3735
@JsonProperty("allow")
@@ -149,19 +147,4 @@ public Policy build() {
149147
return new Policy(this);
150148
}
151149
}
152-
153-
private static class FilterRequirementSerializer extends JsonSerializer<Map<String, FilterRequirement>> {
154-
@Override
155-
public void serialize(
156-
Map<String, FilterRequirement> stringFilterRequirementMap,
157-
JsonGenerator jsonGenerator,
158-
SerializerProvider serializerProvider
159-
) throws IOException, JsonProcessingException {
160-
for (Map.Entry<String, FilterRequirement> entry : stringFilterRequirementMap.entrySet()) {
161-
jsonGenerator.writeObjectFieldStart(entry.getKey());
162-
jsonGenerator.writeBooleanField("required", entry.getValue().value());
163-
jsonGenerator.writeEndObject();
164-
}
165-
}
166-
}
167150
}

src/main/java/com/twilio/jwt/taskrouter/TaskRouterCapability.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public Map<String, Object> getClaims() {
4949
payload.put("account_sid", this.accountSid);
5050
payload.put("friendly_name", this.friendlyName);
5151
payload.put("workspace_sid", this.workspaceSid);
52-
payload.put("channel_id", this.channelId);
52+
payload.put("channel", this.channelId);
5353

5454
if (channelId.startsWith("WK")) {
5555
payload.put("worker_sid", this.channelId);
Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package com.twilio.jwt.taskrouter;
22

3+
import java.util.Date;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
import org.junit.Assert;
9+
import org.junit.Test;
10+
311
import com.google.common.collect.Lists;
12+
import com.twilio.http.HttpMethod;
413
import com.twilio.jwt.Jwt;
14+
515
import io.jsonwebtoken.Claims;
616
import io.jsonwebtoken.Jwts;
7-
import org.junit.Assert;
8-
import org.junit.Test;
9-
10-
import java.util.Date;
11-
import java.util.List;
1217

1318
/**
1419
* Test class for {@link TaskRouterCapability}.
@@ -17,16 +22,16 @@ public class TaskRouterCapabilityTest {
1722

1823
private static final String ACCOUNT_SID = "AC123";
1924
private static final String AUTH_TOKEN = "secret";
20-
private static final String WORKSPACE_SID = "WK123";
21-
private static final String CHANNEL_ID = "CH123";
25+
private static final String WORKSPACE_SID = "WS123";
26+
private static final String WORKER_SID = "WK123";
2227

2328
@Test
2429
public void testToken() {
2530
List<Policy> policies = Lists.newArrayList(
2631
new Policy.Builder().url(UrlUtils.workspaces()).build()
2732
);
28-
Jwt jwt =
29-
new TaskRouterCapability.Builder(ACCOUNT_SID, AUTH_TOKEN, WORKSPACE_SID, CHANNEL_ID)
33+
final Jwt jwt =
34+
new TaskRouterCapability.Builder(ACCOUNT_SID, AUTH_TOKEN, WORKSPACE_SID, WORKER_SID)
3035
.policies(policies)
3136
.build();
3237
Claims claims =
@@ -36,9 +41,56 @@ public void testToken() {
3641
.getBody();
3742

3843
Assert.assertEquals(WORKSPACE_SID, claims.get("workspace_sid"));
39-
Assert.assertEquals(CHANNEL_ID, claims.get("channel_id"));
44+
Assert.assertEquals(WORKER_SID, claims.get("channel"));
4045
Assert.assertEquals(ACCOUNT_SID, claims.get("account_sid"));
4146
Assert.assertEquals(ACCOUNT_SID, claims.getIssuer());
4247
Assert.assertTrue(claims.getExpiration().getTime() > new Date().getTime());
4348
}
49+
50+
@Test
51+
public void testWorkerToken() {
52+
final List<Policy> policies = PolicyUtils.defaultWorkerPolicies(WORKSPACE_SID, WORKER_SID);
53+
54+
final Map<String, FilterRequirement> activityUpdateFilter = new HashMap<>();
55+
activityUpdateFilter.put("ActivitySid", FilterRequirement.REQUIRED);
56+
57+
final Policy allowActivityUpdates = new Policy.Builder()
58+
.url(UrlUtils.worker(WORKSPACE_SID, WORKER_SID))
59+
.method(HttpMethod.POST)
60+
.postFilter(activityUpdateFilter).build();
61+
62+
final Policy allowTasksUpdate = new Policy.Builder()
63+
.url(UrlUtils.allTasks(WORKER_SID))
64+
.method(HttpMethod.POST)
65+
.build();
66+
67+
final Policy allowReservationUpdate = new Policy.Builder()
68+
.url(UrlUtils.allReservations(WORKSPACE_SID, WORKER_SID))
69+
.method(HttpMethod.POST)
70+
.build();
71+
72+
policies.add(allowActivityUpdates);
73+
policies.add(allowTasksUpdate);
74+
policies.add(allowReservationUpdate);
75+
76+
final Jwt jwt =
77+
new TaskRouterCapability.Builder(ACCOUNT_SID, AUTH_TOKEN, WORKSPACE_SID, WORKER_SID)
78+
.policies(policies)
79+
.build();
80+
final Claims claims =
81+
Jwts.parser()
82+
.setSigningKey(AUTH_TOKEN.getBytes())
83+
.parseClaimsJws(jwt.toJwt())
84+
.getBody();
85+
86+
Assert.assertEquals(WORKSPACE_SID, claims.get("workspace_sid"));
87+
Assert.assertEquals(WORKER_SID, claims.get("channel"));
88+
Assert.assertEquals(ACCOUNT_SID, claims.get("account_sid"));
89+
Assert.assertEquals(ACCOUNT_SID, claims.getIssuer());
90+
Assert.assertTrue(claims.getExpiration().getTime() > new Date().getTime());
91+
92+
final List<Policy> claimedPolicies = (List<Policy>) claims.get("policies");
93+
final int connectionPolicies = 2;
94+
Assert.assertEquals(policies.size() + connectionPolicies, claimedPolicies.size());
95+
}
4496
}

0 commit comments

Comments
 (0)