From 3259ae916fb5ff07a4cc1d2e4c4aa9b7190e96a2 Mon Sep 17 00:00:00 2001
From: William Kim <wkim@mitre.org>
Date: Tue, 25 Jun 2013 11:13:06 -0400
Subject: [PATCH] TestThirdPartyIssuerService done.

---
 .../impl/TestThirdPartyIssuerService.java     | 97 +++++++++++++++++++
 1 file changed, 97 insertions(+)
 create mode 100644 openid-connect-client/src/test/java/org/mitre/openid/connect/client/service/impl/TestThirdPartyIssuerService.java

diff --git a/openid-connect-client/src/test/java/org/mitre/openid/connect/client/service/impl/TestThirdPartyIssuerService.java b/openid-connect-client/src/test/java/org/mitre/openid/connect/client/service/impl/TestThirdPartyIssuerService.java
new file mode 100644
index 000000000..afc3fd14a
--- /dev/null
+++ b/openid-connect-client/src/test/java/org/mitre/openid/connect/client/service/impl/TestThirdPartyIssuerService.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright 2013 The MITRE Corporation 
+ *   and the MIT Kerberos and Internet Trust Consortium
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package org.mitre.openid.connect.client.service.impl;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mitre.openid.connect.client.model.IssuerServiceResponse;
+import org.mockito.Mockito;
+import org.springframework.security.authentication.AuthenticationServiceException;
+
+/**
+ * @author wkim
+ *
+ */
+public class TestThirdPartyIssuerService {
+
+	// Test fixture:
+	private HttpServletRequest request;
+	
+	private String iss = "https://server.example.org";
+	private String login_hint = "I'm not telling you nothin!";
+	private String target_link_uri = "https://www.example.com";
+	private String redirect_uri = "https://www.example.com";
+	
+	private String accountChooserUrl = "https://www.example.com/account";
+	
+	private ThirdPartyIssuerService service = new ThirdPartyIssuerService();
+	
+	@Before
+	public void prepare() {
+		
+		service.setAccountChooserUrl(accountChooserUrl);
+		
+		request = Mockito.mock(HttpServletRequest.class);
+		Mockito.when(request.getParameter("iss")).thenReturn(iss);
+		Mockito.when(request.getParameter("login_hint")).thenReturn(login_hint);
+		Mockito.when(request.getParameter("target_link_uri")).thenReturn(target_link_uri);
+		Mockito.when(request.getRequestURL()).thenReturn(new StringBuffer(redirect_uri));
+	}
+	
+	@Test
+	public void getIssuer_hasIssuer() {
+		
+		IssuerServiceResponse response = service.getIssuer(request);
+		
+		assertThat(response.getIssuer(), equalTo(iss));
+		assertThat(response.getLoginHint(), equalTo(login_hint));
+		assertThat(response.getTargetLinkUri(), equalTo(target_link_uri));
+		
+		assertThat(response.getRedirectUrl(), nullValue());
+	}
+	
+	@Test
+	public void getIssuer_noIssuer() {
+		
+		Mockito.when(request.getParameter("iss")).thenReturn(null);
+		
+		IssuerServiceResponse response = service.getIssuer(request);
+		
+		assertThat(response.getIssuer(), nullValue());
+		assertThat(response.getLoginHint(), nullValue());
+		assertThat(response.getTargetLinkUri(), nullValue());
+		
+		String expectedRedirectUrl = accountChooserUrl + "?redirect_uri=" +
+									 "https%3A%2F%2Fwww.example.com"; // url-encoded string of the request url
+		assertThat(response.getRedirectUrl(), equalTo(expectedRedirectUrl));
+	}
+	
+	@Test(expected = AuthenticationServiceException.class)
+	public void getIssuer_badUri() {
+		
+		Mockito.when(request.getParameter("iss")).thenReturn(null);
+		service.setAccountChooserUrl("e=mc^2");
+		
+		service.getIssuer(request);
+	}
+}