@@ -24,6 +24,7 @@ import org.junit.Before
2424import org.junit.Test
2525import org.junit.runner.RunWith
2626import org.robolectric.RobolectricTestRunner
27+ import org.robolectric.annotation.Config
2728
2829@RunWith(RobolectricTestRunner ::class )
2930internal class AWSV4SignerTest {
@@ -91,6 +92,35 @@ internal class AWSV4SignerTest {
9192 assertEquals(expectedUrl, signedUri.toString())
9293 }
9394
95+ @Test
96+ @Config(qualifiers = " ar" )
97+ fun `get signed uri for different locale` () {
98+ signer = AWSV4Signer ()
99+ val expectedUrl = " wss://streaming-rekognition.us-east-1.amazon.com/start-face-liveness-session-websocket" +
100+ " ?X-Amz-Algorithm=AWS4-HMAC-SHA256" +
101+ " &X-Amz-Credential=accessKeyIdTest%252F19700120%252Fus-east-1%252Frekognition%252Faws4_request" +
102+ " &X-Amz-Date=19700120T104017Z" +
103+ " &X-Amz-Expires=299" +
104+ " &X-Amz-SignedHeaders=host" +
105+ " &tK=tV" +
106+ " &x-amz-user-agent=userAgentTest" +
107+ " &X-Amz-Signature=8bf221f80e5f69908ce8e3be0f03ad7cf96c1d329795218ca7ba5322056628ef"
108+
109+ val uri = URI (
110+ " wss://streaming-rekognition.us-east-1.amazon.com/start-face-liveness-session-websocket?tK=tV"
111+ )
112+ val credentials = Credentials (
113+ accessKeyId = " accessKeyIdTest" ,
114+ secretAccessKey = " secretAccessKeyTest" ,
115+ expiration = Instant .fromIso8601(" 2023-03-28T15:28:29+0000" ),
116+ providerName = " providerNameTest"
117+ )
118+ val dateMillis = 1680017309L
119+ val signedUri = signer.getSignedUri(uri, credentials, " us-east-1" , " userAgentTest" , dateMillis)
120+
121+ assertEquals(expectedUrl, signedUri.toString())
122+ }
123+
94124 @Test
95125 fun `get signed frame returns expected and stores previous signature` () {
96126 val expectedFirstFrame = " 1415d07838d82f035231c87641b2477c2fa4f00e9813a04ee95d45368d6b1051"
@@ -113,6 +143,30 @@ internal class AWSV4SignerTest {
113143 assertEquals(expectedSecondFrame, secondFrame)
114144 }
115145
146+ @Test
147+ @Config(qualifiers = " ar" )
148+ fun `get signed frame for different locale returns expected and stores previous signature` () {
149+ signer = AWSV4Signer ()
150+ val expectedFirstFrame = " 1415d07838d82f035231c87641b2477c2fa4f00e9813a04ee95d45368d6b1051"
151+ val expectedSecondFrame = " 31df24081f0088143236e16a1230b0690a29bedf8c7f9a7dbf3f211d176baf73"
152+
153+ val firstFrame = signer.getSignedFrame(
154+ " us-east-1-test" ,
155+ " testFrame1" .toByteArray(),
156+ " sKey1" ,
157+ Pair (" :date" , Date (1680017309L ))
158+ )
159+ val secondFrame = signer.getSignedFrame(
160+ " us-east-1-test" ,
161+ " testFrame2" .toByteArray(),
162+ " sKey2" ,
163+ Pair (" :date" , Date (1680018309L ))
164+ )
165+
166+ assertEquals(expectedFirstFrame, firstFrame)
167+ assertEquals(expectedSecondFrame, secondFrame)
168+ }
169+
116170 @Test
117171 fun `get signed uri with special characters in user agent` () {
118172 val expectedUrl = " wss://streaming-rekognition.us-east-1.amazon.com/start-face-liveness-session-websocket" +
0 commit comments