11package 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+
311import com .google .common .collect .Lists ;
12+ import com .twilio .http .HttpMethod ;
413import com .twilio .jwt .Jwt ;
14+
515import io .jsonwebtoken .Claims ;
616import 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