ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey/*
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * The contents of this file are subject to the terms of the Common Development and
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * Distribution License (the License). You may not use this file except in compliance with the
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * License.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey *
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * specific language governing permission and limitations under the License.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey *
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * When distributing Covered Software, include this CDDL Header Notice in each file and include
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * Header, with the fields enclosed by brackets [] replaced by your own identifying
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * information: "Portions copyright [year] [name of copyright owner]".
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey *
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey * Copyright 2016 ForgeRock AS.
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey */
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseypackage com.forgerock.authenticator.mechanisms.oath;
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport org.junit.Test;
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport static org.testng.Assert.assertFalse;
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyimport static org.testng.Assert.assertTrue;
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseypublic class OathInfoTest {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey public String[] oathUrls() {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey return new String[] {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "otpauth://hotp/WeightWatchers:Dave?digits=6&counter=0",
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "otpauth://totp/WeightWatchers:Dave?digits=6&counter=0"
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey };
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey public String[] nonOathUrls() {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey return new String[] {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "pushauth://hotp/WeightWatchers:Dave?digits=6&counter=0",
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey "random://totp/WeightWatchers:Dave?digits=6&counter=0"
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey };
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey @Test
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey public void shouldRecogniseOathProtocol() {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey for (String url : oathUrls()) {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey assertTrue(new OathInfo().matchesURI(url));
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey @Test
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey public void shouldRejectNonOathProtocol() {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey for (String url : nonOathUrls()) {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey assertFalse(new OathInfo().matchesURI(url));
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey}