1- #if ! NET35
2- using System ;
1+ using System ;
32using System . Collections . Generic ;
43using NUnit . Framework ;
54using Twilio . Jwt ;
65using Twilio . Jwt . AccessToken ;
7- using System . IdentityModel . Tokens . Jwt ;
86using Newtonsoft . Json ;
97
108namespace Twilio . Tests . Jwt . AccessToken
@@ -33,6 +31,8 @@ public override Dictionary<string, object> Headers
3331 [ TestFixture ]
3432 public class AccessTokenTests
3533 {
34+ private static readonly string Secret = "superdupersecretsecret" ;
35+
3636 private Dictionary < string , object > ToDict ( object o )
3737 {
3838 return JsonConvert . DeserializeObject < Dictionary < string , object > > ( o . ToString ( ) ) ;
@@ -41,185 +41,185 @@ private Dictionary<string, object> ToDict(object o)
4141 [ Test ]
4242 public void TestBuildToken ( )
4343 {
44- var jwt = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" ) . ToJwt ( ) ;
44+ var jwt = new TestToken ( "AC456" , "SK123" , Secret ) . ToJwt ( ) ;
4545
46- var decoded = new JwtSecurityToken ( jwt ) ;
47- var headers = decoded . Header ;
46+ var decoded = new DecodedJwt ( jwt , Secret ) ;
4847 var payload = decoded . Payload ;
4948 Assert . IsNotNull ( payload ) ;
5049
51- Assert . AreEqual ( "SK123" , payload . Iss ) ;
52- Assert . AreEqual ( "AC456" , payload . Sub ) ;
53- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
54-
50+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
51+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
52+
53+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
5554 Assert . AreEqual ( "{}" , payload [ "grants" ] . ToString ( ) ) ;
55+ }
56+
57+
58+ [ Test ]
59+ public void TestHaveNbf ( )
60+ {
61+ var now = DateTime . UtcNow ;
62+ var token = new TestToken ( "AC456" , "SK123" , Secret , nbf : now ) . ToJwt ( ) ;
63+ Assert . IsNotNull ( token ) ;
64+ Assert . IsNotEmpty ( token ) ;
65+
66+ var decoded = new DecodedJwt ( token , Secret ) ;
67+ var payload = decoded . Payload ;
68+ Assert . IsNotNull ( payload ) ;
69+
70+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
71+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
72+ Assert . AreEqual ( BaseJwt . ConvertToUnixTimestamp ( now ) , Convert . ToInt64 ( payload [ "nbf" ] ) ) ;
73+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
74+
75+ Assert . AreEqual ( "{}" , payload [ "grants" ] . ToString ( ) ) ;
76+ }
77+
78+ [ Test ]
79+ public void TestAddGrant ( )
80+ {
81+ var grants = new HashSet < IGrant >
82+ {
83+ { new ConversationsGrant ( ) }
84+ } ;
85+ var token = new TestToken ( "AC456" , "SK123" , Secret , grants : grants ) . ToJwt ( ) ;
86+ Assert . IsNotNull ( token ) ;
87+ Assert . IsNotEmpty ( token ) ;
88+
89+ var decoded = new DecodedJwt ( token , Secret ) ;
90+ var payload = decoded . Payload ;
91+ Assert . IsNotNull ( payload ) ;
92+
93+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
94+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
95+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
96+
97+ var decodedGrants = ToDict ( payload [ "grants" ] ) ;
98+ Assert . AreEqual ( 1 , decodedGrants . Count ) ;
99+ Assert . IsNotNull ( decodedGrants [ "rtc" ] ) ;
100+ }
101+
102+ [ Test ]
103+ public void TestAddGrants ( )
104+ {
105+ var grants = new HashSet < IGrant >
106+ {
107+ { new ConversationsGrant ( ) } ,
108+ { new IpMessagingGrant ( ) }
109+ } ;
110+ var token = new TestToken ( "AC456" , "SK123" , Secret , grants : grants ) . ToJwt ( ) ;
111+ Assert . IsNotNull ( token ) ;
112+ Assert . IsNotEmpty ( token ) ;
113+
114+ var decoded = new DecodedJwt ( token , Secret ) ;
115+ var payload = decoded . Payload ;
116+ Assert . IsNotNull ( payload ) ;
117+
118+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
119+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
120+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
121+
122+ var decodedGrants = ToDict ( payload [ "grants" ] ) ;
123+ Assert . AreEqual ( 2 , decodedGrants . Count ) ;
124+ Assert . IsNotNull ( decodedGrants [ "rtc" ] ) ;
125+ Assert . IsNotNull ( decodedGrants [ "ip_messaging" ] ) ;
126+ }
127+
128+ [ Test ]
129+ public void TestCreateVoiceGrant ( )
130+ {
131+ var grants = new HashSet < IGrant >
132+ {
133+ {
134+ new VoiceGrant
135+ {
136+ OutgoingApplicationSid = "AP123" ,
137+ OutgoingApplicationParams = new Dictionary < string , string > { { "foo" , "bar" } }
138+ }
139+ }
140+ } ;
141+ var token = new TestToken ( "AC456" , "SK123" , Secret , grants : grants ) . ToJwt ( ) ;
142+ Assert . IsNotNull ( token ) ;
143+ Assert . IsNotEmpty ( token ) ;
144+
145+ var decoded = new DecodedJwt ( token , Secret ) ;
146+ var payload = decoded . Payload ;
147+ Assert . IsNotNull ( payload ) ;
148+
149+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
150+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
151+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
152+
153+ var decodedGrants = ToDict ( payload [ "grants" ] ) ;
154+ Assert . AreEqual ( 1 , decodedGrants . Count ) ;
155+
156+ var decodedPvg = decodedGrants [ "voice" ] ;
157+ var outgoing = ToDict ( decodedPvg . ToString ( ) ) [ "outgoing" ] ;
158+ Assert . AreEqual ( "AP123" , ToDict ( outgoing ) [ "application_sid" ] ) ;
159+
160+ var decodedParams = ToDict ( outgoing ) [ "params" ] ;
161+ Assert . AreEqual ( "bar" , ToDict ( decodedParams ) [ "foo" ] ) ;
162+ }
163+
164+ [ Test ]
165+ public void TestCreateSyncGrant ( )
166+ {
167+ var grants = new HashSet < IGrant >
168+ {
169+ {
170+ new SyncGrant
171+ {
172+ ServiceSid = "IS123" ,
173+ EndpointId = "foobar"
174+ }
175+ }
176+ } ;
177+ var token = new TestToken ( "AC456" , "SK123" , Secret , grants : grants ) . ToJwt ( ) ;
178+ Assert . IsNotNull ( token ) ;
179+ Assert . IsNotEmpty ( token ) ;
180+
181+ var decoded = new DecodedJwt ( token , Secret ) ;
182+ var payload = decoded . Payload ;
183+ Assert . IsNotNull ( payload ) ;
184+
185+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
186+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
187+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
188+
189+ var decodedGrants = ToDict ( payload [ "grants" ] ) ;
190+ Assert . AreEqual ( 1 , decodedGrants . Count ) ;
191+
192+ var decodedSg = ToDict ( decodedGrants [ "data_sync" ] ) ;
193+ Assert . AreEqual ( "IS123" , decodedSg [ "service_sid" ] ) ;
194+ Assert . AreEqual ( "foobar" , decodedSg [ "endpoint_id" ] ) ;
195+
196+ }
197+
198+ [ Test ]
199+ public void TestCreateVideoGrant ( )
200+ {
201+ var grants = new HashSet < IGrant >
202+ {
203+ { new VideoGrant { ConfigurationProfileSid = "CP123" } }
204+ } ;
205+ var token = new TestToken ( "AC456" , "SK123" , Secret , grants : grants ) . ToJwt ( ) ;
206+ Assert . IsNotNull ( token ) ;
207+ Assert . IsNotEmpty ( token ) ;
208+
209+ var decoded = new DecodedJwt ( token , Secret ) ;
210+ var payload = decoded . Payload ;
211+ Assert . IsNotNull ( payload ) ;
212+
213+ Assert . AreEqual ( "SK123" , payload [ "iss" ] ) ;
214+ Assert . AreEqual ( "AC456" , payload [ "sub" ] ) ;
215+ Assert . Greater ( Convert . ToInt64 ( payload [ "exp" ] ) , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
216+
217+ var decodedGrants = ToDict ( payload [ "grants" ] ) ;
218+ Assert . AreEqual ( 1 , decodedGrants . Count ) ;
219+
220+ var decodedVg = ToDict ( decodedGrants [ "video" ] ) ;
221+ Assert . AreEqual ( "CP123" , decodedVg [ "configuration_profile_sid" ] ) ;
56222 }
57223
58- [ Test ]
59- public void TestHaveNbf ( )
60- {
61- var now = DateTime . UtcNow ;
62- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , nbf : now ) . ToJwt ( ) ;
63- Assert . IsNotNull ( token ) ;
64- Assert . IsNotEmpty ( token ) ;
65-
66- var decoded = new JwtSecurityToken ( token ) ;
67- var payload = decoded . Payload ;
68- Assert . IsNotNull ( payload ) ;
69-
70- Assert . AreEqual ( "SK123" , payload . Iss ) ;
71- Assert . AreEqual ( "AC456" , payload . Sub ) ;
72- Assert . AreEqual ( BaseJwt . ConvertToUnixTimestamp ( now ) , payload . Nbf ) ;
73- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
74-
75- Assert . AreEqual ( "{}" , payload [ "grants" ] . ToString ( ) ) ;
76- }
77-
78- [ Test ]
79- public void TestAddGrant ( )
80- {
81- var grants = new HashSet < IGrant >
82- {
83- { new ConversationsGrant ( ) }
84- } ;
85- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , grants : grants ) . ToJwt ( ) ;
86- Assert . IsNotNull ( token ) ;
87- Assert . IsNotEmpty ( token ) ;
88-
89- var decoded = new JwtSecurityToken ( token ) ;
90- var payload = decoded . Payload ;
91- Assert . IsNotNull ( payload ) ;
92-
93- Assert . AreEqual ( "SK123" , payload . Iss ) ;
94- Assert . AreEqual ( "AC456" , payload . Sub ) ;
95- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
96-
97- var decodedGrants = ToDict ( payload [ "grants" ] ) ;
98- Assert . AreEqual ( 1 , decodedGrants . Count ) ;
99- Assert . IsNotNull ( decodedGrants [ "rtc" ] ) ;
100- }
101-
102- [ Test ]
103- public void TestAddGrants ( )
104- {
105- var grants = new HashSet < IGrant >
106- {
107- { new ConversationsGrant ( ) } ,
108- { new IpMessagingGrant ( ) }
109- } ;
110- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , grants : grants ) . ToJwt ( ) ;
111- Assert . IsNotNull ( token ) ;
112- Assert . IsNotEmpty ( token ) ;
113-
114- var decoded = new JwtSecurityToken ( token ) ;
115- var payload = decoded . Payload ;
116- Assert . IsNotNull ( payload ) ;
117-
118- Assert . AreEqual ( "SK123" , payload . Iss ) ;
119- Assert . AreEqual ( "AC456" , payload . Sub ) ;
120- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
121-
122- var decodedGrants = ToDict ( payload [ "grants" ] ) ;
123- Assert . AreEqual ( 2 , decodedGrants . Count ) ;
124- Assert . IsNotNull ( decodedGrants [ "rtc" ] ) ;
125- Assert . IsNotNull ( decodedGrants [ "ip_messaging" ] ) ;
126- }
127-
128- [ Test ]
129- public void TestCreateVoiceGrant ( )
130- {
131- var grants = new HashSet < IGrant >
132- {
133- {
134- new VoiceGrant
135- {
136- OutgoingApplicationSid = "AP123" ,
137- OutgoingApplicationParams = new Dictionary < string , string > { { "foo" , "bar" } }
138- }
139- }
140- } ;
141- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , grants : grants ) . ToJwt ( ) ;
142- Assert . IsNotNull ( token ) ;
143- Assert . IsNotEmpty ( token ) ;
144-
145- var decoded = new JwtSecurityToken ( token ) ;
146- var payload = decoded . Payload ;
147- Assert . IsNotNull ( payload ) ;
148-
149- Assert . AreEqual ( "SK123" , payload . Iss ) ;
150- Assert . AreEqual ( "AC456" , payload . Sub ) ;
151- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
152-
153- var decodedGrants = ToDict ( payload [ "grants" ] ) ;
154- Assert . AreEqual ( 1 , decodedGrants . Count ) ;
155-
156- var decodedPvg = decodedGrants [ "voice" ] ;
157- var outgoing = ToDict ( decodedPvg . ToString ( ) ) [ "outgoing" ] ;
158- Assert . AreEqual ( "AP123" , ToDict ( outgoing ) [ "application_sid" ] ) ;
159-
160- var decodedParams = ToDict ( outgoing ) [ "params" ] ;
161- Assert . AreEqual ( "bar" , ToDict ( decodedParams ) [ "foo" ] ) ;
162- }
163-
164- [ Test ]
165- public void TestCreateSyncGrant ( )
166- {
167- var grants = new HashSet < IGrant >
168- {
169- {
170- new SyncGrant
171- {
172- ServiceSid = "IS123" ,
173- EndpointId = "foobar"
174- }
175- }
176- } ;
177- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , grants : grants ) . ToJwt ( ) ;
178- Assert . IsNotNull ( token ) ;
179- Assert . IsNotEmpty ( token ) ;
180-
181- var decoded = new JwtSecurityToken ( token ) ;
182- var payload = decoded . Payload ;
183- Assert . IsNotNull ( payload ) ;
184-
185- Assert . AreEqual ( "SK123" , payload . Iss ) ;
186- Assert . AreEqual ( "AC456" , payload . Sub ) ;
187- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
188-
189- var decodedGrants = ToDict ( payload [ "grants" ] ) ;
190- Assert . AreEqual ( 1 , decodedGrants . Count ) ;
191-
192- var decodedSg = ToDict ( decodedGrants [ "data_sync" ] ) ;
193- Assert . AreEqual ( "IS123" , decodedSg [ "service_sid" ] ) ;
194- Assert . AreEqual ( "foobar" , decodedSg [ "endpoint_id" ] ) ;
195-
196- }
197-
198- [ Test ]
199- public void TestCreateVideoGrant ( )
200- {
201- var grants = new HashSet < IGrant >
202- {
203- { new VideoGrant { ConfigurationProfileSid = "CP123" } }
204- } ;
205- var token = new TestToken ( "AC456" , "SK123" , "superdupersecretsecret" , grants : grants ) . ToJwt ( ) ;
206- Assert . IsNotNull ( token ) ;
207- Assert . IsNotEmpty ( token ) ;
208-
209- var decoded = new JwtSecurityToken ( token ) ;
210- var payload = decoded . Payload ;
211- Assert . IsNotNull ( payload ) ;
212-
213- Assert . AreEqual ( "SK123" , payload . Iss ) ;
214- Assert . AreEqual ( "AC456" , payload . Sub ) ;
215- Assert . Greater ( payload . Exp . Value , BaseJwt . ConvertToUnixTimestamp ( DateTime . UtcNow ) ) ;
216-
217- var decodedGrants = ToDict ( payload [ "grants" ] ) ;
218- Assert . AreEqual ( 1 , decodedGrants . Count ) ;
219-
220- var decodedVg = ToDict ( decodedGrants [ "video" ] ) ;
221- Assert . AreEqual ( "CP123" , decodedVg [ "configuration_profile_sid" ] ) ;
222- }
223224 }
224- }
225- #endif
225+ }
0 commit comments