tests for webfinger url normalization.
parent
eaa7298ef1
commit
809a243b64
|
@ -1,74 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* 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.junit.Assert.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.log4j.BasicConfigurator;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mitre.openid.connect.client.model.IssuerServiceResponse;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
/**
|
||||
* @author wkim
|
||||
*
|
||||
*/
|
||||
public class TestWebfingerIssuerService {
|
||||
|
||||
// Test fixture:
|
||||
private HttpServletRequest request;
|
||||
|
||||
// WebfingerIssuerService.parameterName = "identifier";
|
||||
private String identifier = "user@example.org";
|
||||
|
||||
private String loginPageUrl = "https://www.example.com/account";
|
||||
|
||||
private WebfingerIssuerService service = new WebfingerIssuerService();
|
||||
|
||||
@Before
|
||||
public void prepare() {
|
||||
|
||||
BasicConfigurator.configure();
|
||||
|
||||
service.setLoginPageUrl(loginPageUrl);
|
||||
|
||||
request = Mockito.mock(HttpServletRequest.class);
|
||||
Mockito.when(request.getParameter("identifier")).thenReturn(identifier);
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanup() {
|
||||
|
||||
BasicConfigurator.resetConfiguration();
|
||||
}
|
||||
|
||||
//@Test
|
||||
public void getIssuer_validIdentifier() {
|
||||
|
||||
IssuerServiceResponse response = service.getIssuer(request);
|
||||
|
||||
String expectedIssuer = "https://example.org/.well-known/webfinger";
|
||||
|
||||
assertThat(response.getIssuer(), equalTo(expectedIssuer));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,210 @@
|
|||
/*******************************************************************************
|
||||
* 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.discovery.util;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
/**
|
||||
* @author wkim
|
||||
*
|
||||
*/
|
||||
public class TestWebfingerURLNormalizer {
|
||||
|
||||
|
||||
// Test fixture:
|
||||
|
||||
private String parameterName = "identifier";
|
||||
|
||||
private List<String> inputIndentifierList = Lists.newArrayList(
|
||||
"example.com",
|
||||
"example.com:8080",
|
||||
"example.com/path",
|
||||
"example.com?query",
|
||||
"example.com#fragment",
|
||||
"example.com:8080/path?query#fragment",
|
||||
"http://example.com",
|
||||
"http://example.com:8080",
|
||||
"http://example.com/path",
|
||||
"http://example.com?query",
|
||||
"http://example.com#fragment",
|
||||
"http://example.com:8080/path?query#fragment",
|
||||
"nov@example.com",
|
||||
"nov@example.com:8080",
|
||||
"nov@example.com/path",
|
||||
"nov@example.com?query",
|
||||
"nov@example.com#fragment",
|
||||
"nov@example.com:8080/path?query#fragment",
|
||||
"acct:nov@matake.jp",
|
||||
"acct:nov@example.com:8080",
|
||||
"acct:nov@example.com/path",
|
||||
"acct:nov@example.com?query",
|
||||
"acct:nov@example.com#fragment",
|
||||
"acct:nov@example.com:8080/path?query#fragment",
|
||||
"mailto:nov@matake.jp",
|
||||
"mailto:nov@example.com:8080",
|
||||
"mailto:nov@example.com/path",
|
||||
"mailto:nov@example.com?query",
|
||||
"mailto:nov@example.com#fragment",
|
||||
"mailto:nov@example.com:8080/path?query#fragment",
|
||||
"localhost",
|
||||
"localhost:8080",
|
||||
"localhost/path",
|
||||
"localhost?query",
|
||||
"localhost#fragment",
|
||||
"localhost/path?query#fragment",
|
||||
"nov@localhost",
|
||||
"nov@localhost:8080",
|
||||
"nov@localhost/path",
|
||||
"nov@localhost?query",
|
||||
"nov@localhost#fragmentx",
|
||||
"nov@localhost/path?query#fragment",
|
||||
"tel:+810312345678",
|
||||
"device:192.168.2.1",
|
||||
"device:192.168.2.1:8080",
|
||||
"device:192.168.2.1/path",
|
||||
"device:192.168.2.1?query",
|
||||
"device:192.168.2.1#fragment",
|
||||
"device:192.168.2.1/path?query#fragment");
|
||||
|
||||
private List<String> expectedNormalizedIssuerList = Lists.newArrayList(
|
||||
"https://example.com",
|
||||
"https://example.com:8080",
|
||||
"https://example.com/path",
|
||||
"https://example.com?query",
|
||||
"https://example.com",
|
||||
"https://example.com:8080/path?query",
|
||||
"http://example.com",
|
||||
"http://example.com:8080",
|
||||
"http://example.com/path",
|
||||
"http://example.com?query",
|
||||
"http://example.com",
|
||||
"http://example.com:8080/path?query",
|
||||
"acct:nov@example.com",
|
||||
"https://nov@example.com:8080",
|
||||
"https://nov@example.com/path",
|
||||
"https://nov@example.com?query",
|
||||
"acct:nov@example.com",
|
||||
"https://nov@example.com:8080/path?query",
|
||||
"acct:nov@matake.jp",
|
||||
"acct:nov@example.com:8080",
|
||||
"acct:nov@example.com/path",
|
||||
"acct:nov@example.com?query",
|
||||
"acct:nov@example.com",
|
||||
"acct:nov@example.com:8080/path?query",
|
||||
"mailto:nov@matake.jp",
|
||||
"mailto:nov@example.com:8080",
|
||||
"mailto:nov@example.com/path",
|
||||
"mailto:nov@example.com?query",
|
||||
"mailto:nov@example.com",
|
||||
"mailto:nov@example.com:8080/path?query",
|
||||
"https://localhost",
|
||||
"https://localhost:8080",
|
||||
"https://localhost/path",
|
||||
"https://localhost?query",
|
||||
"https://localhost",
|
||||
"https://localhost/path?query",
|
||||
"acct:nov@localhost",
|
||||
"https://nov@localhost:8080",
|
||||
"https://nov@localhost/path",
|
||||
"https://nov@localhost?query",
|
||||
"https://nov@localhost?query",
|
||||
"https://nov@localhost/path?query",
|
||||
"tel:+810312345678",
|
||||
"device:192.168.2.1",
|
||||
"device:192.168.2.1:8080",
|
||||
"device:192.168.2.1/path",
|
||||
"device:192.168.2.1?query",
|
||||
"device:192.168.2.1",
|
||||
"device:192.168.2.1/path?query");
|
||||
|
||||
/*
|
||||
Adapted from Nov Matake's Ruby normalizer implementation.
|
||||
|
||||
## INPUT => NORMALIZED
|
||||
# example.com => https://example.com
|
||||
# example.com:8080 => https://example.com:8080
|
||||
# example.com/path => https://example.com/path
|
||||
# example.com?query => https://example.com?query
|
||||
# example.com#fragment => https://example.com
|
||||
# example.com:8080/path?query#fragment => https://example.com:8080/path?query
|
||||
# http://example.com => http://example.com
|
||||
# http://example.com:8080 => http://example.com:8080
|
||||
# http://example.com/path => http://example.com/path
|
||||
# http://example.com?query => http://example.com?query
|
||||
# http://example.com#fragment => http://example.com
|
||||
# http://example.com:8080/path?query#fragment => http://example.com:8080/path?query
|
||||
# nov@example.com => acct:nov@example.com
|
||||
# nov@example.com:8080 => https://nov@example.com:8080
|
||||
# nov@example.com/path => https://nov@example.com/path
|
||||
# nov@example.com?query => https://nov@example.com?query
|
||||
# nov@example.com#fragment => acct:nov@example.com
|
||||
# nov@example.com:8080/path?query#fragment => https://nov@example.com:8080/path?query
|
||||
# acct:nov@matake.jp => acct:nov@matake.jp
|
||||
# acct:nov@example.com:8080 => acct:nov@example.com:8080
|
||||
# acct:nov@example.com/path => acct:nov@example.com/path
|
||||
# acct:nov@example.com?query => acct:nov@example.com?query
|
||||
# acct:nov@example.com#fragment => acct:nov@example.com
|
||||
# acct:nov@example.com:8080/path?query#fragment => acct:nov@example.com:8080/path?query
|
||||
# mailto:nov@matake.jp => mailto:nov@matake.jp
|
||||
# mailto:nov@example.com:8080 => mailto:nov@example.com:8080
|
||||
# mailto:nov@example.com/path => mailto:nov@example.com/path
|
||||
# mailto:nov@example.com?query => mailto:nov@example.com?query
|
||||
# mailto:nov@example.com#fragment => mailto:nov@example.com
|
||||
# mailto:nov@example.com:8080/path?query#fragment => mailto:nov@example.com:8080/path?query
|
||||
# localhost => https://localhost
|
||||
# localhost:8080 => https://localhost:8080
|
||||
# localhost/path => https://localhost/path
|
||||
# localhost?query => https://localhost?query
|
||||
# localhost#fragment => https://localhost
|
||||
# localhost/path?query#fragment => https://localhost/path?query
|
||||
# nov@localhost => acct:nov@localhost
|
||||
# nov@localhost:8080 => https://nov@localhost:8080
|
||||
# nov@localhost/path => https://nov@localhost/path
|
||||
# nov@localhost?query => https://nov@localhost?query
|
||||
# nov@localhost#fragment => acct:nov@localhost
|
||||
# nov@localhost/path?query#fragment => https://nov@localhost/path?query
|
||||
# tel:+810312345678 => tel:+810312345678
|
||||
# device:192.168.2.1 => device:192.168.2.1
|
||||
# device:192.168.2.1:8080 => device:192.168.2.1:8080
|
||||
# device:192.168.2.1/path => device:192.168.2.1/path
|
||||
# device:192.168.2.1?query => device:192.168.2.1?query
|
||||
# device:192.168.2.1#fragment => device:192.168.2.1
|
||||
# device:192.168.2.1/path?query#fragment => device:192.168.2.1/path?query
|
||||
*/
|
||||
|
||||
|
||||
@Test
|
||||
public void normalizeResource() {
|
||||
|
||||
for (int i = 0; i < inputIndentifierList.size(); i++) {
|
||||
|
||||
String identifier = inputIndentifierList.get(i);
|
||||
String expectedIssuer = expectedNormalizedIssuerList.get(i);
|
||||
|
||||
String actualIssuer = WebfingerURLNormalizer.normalizeResource(identifier).toUriString();
|
||||
|
||||
assertEquals("Identifer/Issuer pair #" + i + " failed.", expectedIssuer, actualIssuer);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue