Skip to content

Commit 2e4fe17

Browse files
committed
Added validation url to exception
1 parent 93f5eda commit 2e4fe17

File tree

3 files changed

+61
-6
lines changed

3 files changed

+61
-6
lines changed

QueueIT.Security/src/queueit/security/KnownUserException.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,24 @@
55
public abstract class KnownUserException extends SecurityException
66
{
77
private URI originalUrl;
8+
private URI validationUrl;
89

910
public URI getOriginalUrl() {
1011
return this.originalUrl;
1112
}
12-
13+
14+
public URI getValidationUrl() {
15+
return this.validationUrl;
16+
}
17+
1318
void setOriginalUrl(URI originalUrl) {
1419
this.originalUrl = originalUrl;
1520
}
1621

22+
void setValidationUrl(URI validationUrl) {
23+
this.validationUrl = validationUrl;
24+
}
25+
1726
public KnownUserException(String message, Throwable cause)
1827
{
1928
super(message, cause);

QueueIT.Security/src/queueit/security/KnownUserFactory.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,10 @@ public static IKnownUser verifyMd5Hash(String secretKey, IKnownUserUrlProvider u
115115
querystringPrefix = "";
116116
}
117117

118+
URI url = urlProvider.getUrl();
118119
URI originalUrl = urlProvider.getOriginalUrl(querystringPrefix);
119120

120121
try {
121-
URI url = urlProvider.getUrl();
122122
UUID queueId = parseQueueId(urlProvider.getQueueId(querystringPrefix));
123123
String placeInQueueObfuscated = urlProvider.getPlaceInQueue(querystringPrefix);
124124
Integer placeInQueue = null;
@@ -150,11 +150,9 @@ public static IKnownUser verifyMd5Hash(String secretKey, IKnownUserUrlProvider u
150150
validateHash(url, secretKey, expectedHash);
151151

152152
return new Md5KnownUser(queueId, placeInQueue, timeStamp, customerId, eventId, redirectType, originalUrl);
153-
} catch (InvalidKnownUserHashException ex) {
154-
ex.setOriginalUrl(originalUrl);
155-
throw ex;
156-
} catch (InvalidKnownUserUrlException ex) {
153+
} catch (KnownUserException ex) {
157154
ex.setOriginalUrl(originalUrl);
155+
ex.setValidationUrl(url);
158156
throw ex;
159157
}
160158
}

QueueIT.Security/test/queueit/security/KnownUserFactoryTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,54 @@ public void KnownUserFactory_VerifyMd5HashTest_InvalidHash_Test() {
185185
VerifyMd5Hash_Test("becb0723-fee7-4a82-87d0-622475c7cf36", 1349168841, 7810, "88401038-0306-4831-b7c0-e115da0bdc46", "d4e47d0b1a732c5dbf3e10d92881ed93", "mpro");
186186
}
187187

188+
@Test()
189+
public void KnownUserFactory_VerifyMd5HashTest_KnownUserException_Test() {
190+
//Arrange
191+
Date expectedTimeStamp = null;
192+
String querystringPrefix = "mpro";
193+
int unixTimestamp = 1349168841;
194+
String expectedQueueId = "becb0723-fee7-4a82-87d0-622475c7cf36";
195+
String placeInQueueEncrypted = "88401038-0306-4831-b7c0-e115da0bdc46";
196+
String hash = "d4e47d0b1a732c5dbf3e10d92881ed93";
197+
198+
try {
199+
if (unixTimestamp > 0) {
200+
expectedTimeStamp = Calendar.getInstance().getTime();
201+
expectedTimeStamp.setTime(unixTimestamp * 1000);
202+
}
203+
} catch (Exception e) {
204+
//Ignore
205+
}
206+
RedirectType expectedRedirectType = RedirectType.Queue;
207+
String expectedCustomerId = "somecust";
208+
String expectedEventId = "someevent";
209+
String expectedOriginalUrl = "http://www.ticketanina.com/shop.aspx?x=sdfsdf";
210+
String urlWithHash = expectedOriginalUrl
211+
+ "&" + querystringPrefix + "q=" + expectedQueueId
212+
+ "&" + querystringPrefix + "p=" + placeInQueueEncrypted
213+
+ "&" + querystringPrefix + "ts=" + unixTimestamp
214+
+ "&" + querystringPrefix + "c=" + expectedCustomerId
215+
+ "&" + querystringPrefix + "e=" + expectedEventId
216+
+ "&" + querystringPrefix + "h=" + hash;
217+
218+
MockUrlProvider urlProvider = null;
219+
try {
220+
urlProvider = new MockUrlProvider(new URI(urlWithHash), expectedQueueId, placeInQueueEncrypted, String.valueOf(unixTimestamp), expectedEventId, expectedCustomerId, new URI(expectedOriginalUrl), expectedRedirectType.toString());
221+
} catch (Exception ex) {
222+
//ignore
223+
}
224+
225+
//Act
226+
try
227+
{
228+
IKnownUser knownUser = KnownUserFactory.verifyMd5Hash(SharedSecreteEventKey, urlProvider, querystringPrefix);
229+
} catch (KnownUserException ex) {
230+
//Assert
231+
assertEquals(expectedOriginalUrl, ex.getOriginalUrl().toString());
232+
assertEquals(urlWithHash, ex.getValidationUrl().toString());
233+
}
234+
}
235+
188236
@Test(expected = InvalidKnownUserUrlException.class)
189237
public void KnownUserFactory_VerifyMd5HashTest_NoParameters_Test() {
190238
// "d4e47d0b1a732c5dbf3e10d92881ed92" is valid hash

0 commit comments

Comments
 (0)