/* * Copyright (c) 2010 Google Inc. * * 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 com.google.api.client.auth.oauth; import com.google.api.client.http.GenericUrl; import java.security.GeneralSecurityException; import junit.framework.TestCase; /** * Tests {@link OAuthParameters}. * * @author Yaniv Inbar */ public class OAuthParametersTest extends TestCase { static class MockSigner implements OAuthSigner { public String getSignatureMethod() { return "mock"; } public String computeSignature(String signatureBaseString) { return signatureBaseString; } } public void testEscape() { assertEquals( "abcdefghijklmnopqrstuvwxyz", OAuthParameters.escape("abcdefghijklmnopqrstuvwxyz")); assertEquals( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", OAuthParameters.escape("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); assertEquals("01234567890", OAuthParameters.escape("01234567890")); assertEquals("-_.~", OAuthParameters.escape("-_.~")); assertEquals("%20%2B%25%3A%2F", OAuthParameters.escape(" +%:/")); } public void testGetAuthorizationHeader() { OAuthParameters parameters = new OAuthParameters(); parameters.verifier = "gZ1BFee1qSijpqbxfnX+o8rQ"; parameters.consumerKey = "anonymous"; parameters.nonce = "b51df3249df9dfd"; parameters.signatureMethod = "HMAC-SHA1"; parameters.timestamp = "1274732403"; parameters.token = "4/1mZ3ZPynTry3szE49h3XyXk24p_I"; parameters.signature = "OTfTeiNjKsNeqBtYhUPIiJO9pC4="; assertEquals("OAuth oauth_consumer_key=\"anonymous\", oauth_nonce=\"b51df3249df9dfd\", " + "oauth_signature=\"OTfTeiNjKsNeqBtYhUPIiJO9pC4%3D\", " + "oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1274732403\", " + "oauth_token=\"4%2F1mZ3ZPynTry3szE49h3XyXk24p_I\", " + "oauth_verifier=\"gZ1BFee1qSijpqbxfnX%2Bo8rQ\"", parameters.getAuthorizationHeader()); } public void testSignature() throws GeneralSecurityException { OAuthParameters parameters = new OAuthParameters(); parameters.signer = new MockSigner(); GenericUrl url = new GenericUrl("https://example.local?foo=bar"); parameters.computeSignature("GET", url); assertEquals("GET&https%3A%2F%2Fexample.local&foo%3Dbar%26oauth_signature_method%3Dmock", parameters.signature); } public void testSignatureWithRepeatedParameter() throws GeneralSecurityException { OAuthParameters parameters = new OAuthParameters(); parameters.signer = new MockSigner(); GenericUrl url = new GenericUrl("https://example.local?foo=baz&foo=bar"); parameters.computeSignature("GET", url); assertEquals("GET&https%3A%2F%2Fexample.local&foo%3Dbar%26foo%3Dbaz%26oauth_signature_method%3Dmock", parameters.signature); } }