/* * 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.http; import com.google.api.client.testing.http.HttpTesting; import com.google.api.client.testing.http.MockHttpTransport; import com.google.api.client.util.ArrayMap; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * Tests {@link UrlEncodedContent}. * * @author Yaniv Inbar */ public class UrlEncodedContentTest extends TestCase { public void testWriteTo() throws IOException { subtestWriteTo("a=x", ArrayMap.of("a", "x")); subtestWriteTo("noval", ArrayMap.of("noval", "")); subtestWriteTo( "multi=a&multi=b&multi=c", ArrayMap.of("multi", Arrays.asList("a", "b", "c"))); subtestWriteTo( "multi=a&multi=b&multi=c", ArrayMap.of("multi", new String[] {"a", "b", "c"})); // https://code.google.com/p/google-http-java-client/issues/detail?id=202 final Map<String, String> params = new LinkedHashMap<String, String>(); params.put("username", "un"); params.put("password", "password123;{}"); subtestWriteTo("username=un&password=password123%3B%7B%7D", params); } private void subtestWriteTo(String expected, Object data) throws IOException { UrlEncodedContent content = new UrlEncodedContent(data); ByteArrayOutputStream out = new ByteArrayOutputStream(); content.writeTo(out); assertEquals(expected, out.toString()); } public void testGetContent() throws Exception { HttpRequest request = new MockHttpTransport().createRequestFactory() .buildGetRequest(HttpTesting.SIMPLE_GENERIC_URL); UrlEncodedContent content = UrlEncodedContent.getContent(request); assertNotNull(content); assertTrue(content.getData() instanceof Map); assertEquals(content, UrlEncodedContent.getContent(request)); } public void testGetData() { try { new UrlEncodedContent(null); fail("expected " + NullPointerException.class); } catch (NullPointerException e) { // expected } Map<String, Object> map = new HashMap<String, Object>(); UrlEncodedContent content = new UrlEncodedContent(map); assertEquals(map, content.getData()); } }