/* * Copyright 2015 ArcBees 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.gwtplatform.dispatch.rest.client.core.parameters; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; import javax.ws.rs.core.Cookie; import javax.ws.rs.core.NewCookie; import org.junit.Test; import org.junit.runner.RunWith; import com.google.gwtmockito.GwtMockitoTestRunner; import com.gwtplatform.dispatch.rest.client.testutils.RuntimeDelegateStub; import com.gwtplatform.dispatch.rest.shared.HttpParameter.Type; import static org.assertj.core.api.Assertions.assertThat; @RunWith(GwtMockitoTestRunner.class) public class CookieParameterTest { private static final String COOKIE_NAME = "someName"; private static final String PARAM_NAME = "someName2"; private static final String SOME_VALUE = "someValue"; private static final String SOME_VALUE_2 = "someValue2"; static { RuntimeDelegateStub.register(); } @Test public void getType_returnsCookie() { // given CookieParameter parameter = new CookieParameter("", null, ""); // when Type type = parameter.getType(); // then assertThat(type).isSameAs(Type.COOKIE); } @Test public void getName_returnsProvidedName() { // given CookieParameter parameter = new CookieParameter(COOKIE_NAME, null, ""); // when String name = parameter.getName(); // then assertThat(name).isEqualTo(COOKIE_NAME); } @Test public void getObject_returnsProvidedObject() { // given Object value = new Object(); CookieParameter parameter = new CookieParameter(COOKIE_NAME, value, ""); // when Object object = parameter.getObject(); // then assertThat(object).isSameAs(value); } @Test public void getEntries_string_returnsOneParsedCookie() { // given CookieParameter parameter = new CookieParameter(COOKIE_NAME, SOME_VALUE, ""); // when List<Entry<String, String>> entries = parameter.getEncodedEntries(); // then assertThat(entries) .extracting("value") .containsOnly(COOKIE_NAME + "=" + SOME_VALUE); } @Test public void getEntries_newCookie_returnsOneParsedCookie() { // given String path = "/path"; String domain = "domain.com"; int maxAge = 5000; NewCookie newCookie = new NewCookie(COOKIE_NAME, SOME_VALUE, path, domain, 1, "", maxAge, true); CookieParameter parameter = new CookieParameter(PARAM_NAME, newCookie, ""); // when List<Entry<String, String>> entries = parameter.getEncodedEntries(); // then assertThat(entries) .extracting("value") .containsOnly( PARAM_NAME + "=" + SOME_VALUE + ";max-age=" + maxAge + ";domain=" + domain + ";path=" + path + ";secure"); } @Test public void getEntries_newCookieWithDefaultValues_returnsOneParsedCookie() { // given NewCookie newCookie = new NewCookie(COOKIE_NAME, SOME_VALUE); CookieParameter parameter = new CookieParameter(PARAM_NAME, newCookie, ""); // when List<Entry<String, String>> entries = parameter.getEncodedEntries(); // then assertThat(entries) .extracting("value") .containsOnly(PARAM_NAME + "=" + SOME_VALUE); } @Test public void getEntries_cookie_returnsOneParsedCookie() { // given Cookie cookie = new Cookie(COOKIE_NAME, SOME_VALUE); CookieParameter parameter = new CookieParameter(PARAM_NAME, cookie, ""); // when List<Entry<String, String>> entries = parameter.getEncodedEntries(); // then assertThat(entries) .extracting("value") .containsOnly(PARAM_NAME + "=" + SOME_VALUE); } /** * Collections of cookies may be sued to specify the same cookie on different path. For simplicity here, I'm gonna * skip that. */ @Test public void getEntries_collectionOfCookie_returnsMultipleParsedCookies() { // given List<Cookie> cookies = new ArrayList<>(); cookies.add(new Cookie(COOKIE_NAME, SOME_VALUE)); cookies.add(new Cookie(COOKIE_NAME, SOME_VALUE_2)); CookieParameter parameter = new CookieParameter(PARAM_NAME, cookies, ""); // when List<Entry<String, String>> entries = parameter.getEncodedEntries(); // then assertThat(entries) .extracting("value") .containsOnly( PARAM_NAME + "=" + SOME_VALUE, PARAM_NAME + "=" + SOME_VALUE_2); } @Test(expected = IllegalArgumentException.class) public void getEntries_collectionOfObjects_throws() { // given List<Object> cookies = new ArrayList<>(); cookies.add(SOME_VALUE); CookieParameter parameter = new CookieParameter(PARAM_NAME, cookies, ""); // when parameter.getEncodedEntries(); } }