content: /*  Copyright 2011 ThoughtWorks Ltd
   *
   *  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.thoughtworks.inproctester.htmlunit;
  
  import com.gargoylesoftware.htmlunit.util.Cookie;
  import org.junit.Test;
  
  import java.util.Calendar;
  import java.util.Date;
  import java.util.GregorianCalendar;
  import java.util.TimeZone;
  
  import static org.hamcrest.MatcherAssert.assertThat;
  import static org.hamcrest.Matchers.is;
  import static org.hamcrest.Matchers.nullValue;
  
  public class CookieParserTest {
  
      public Date getTestDate(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) {
          Calendar testDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
          testDate.set(year, month - 1, dayOfMonth, hourOfDay, minute, second);
          testDate.set(Calendar.MILLISECOND, 0);
          return testDate.getTime();
      }
  
      @Test
      public void ShouldparseCookieWithExpiryButNoValueCorrectly() {
          Date testDate = getTestDate(2010, 8, 3, 9, 25, 3);
          final String rawCookie = "USER=; expires=Tue, 03-Aug-2010 09:25:03 GMT; path=/";
  
          CookieParser cookieParser = new CookieParser();
          Cookie cookie = cookieParser.parseCookie("localhost", rawCookie);
  
          assertThat(cookie.getName(), is("USER"));
          assertThat(cookie.getValue(), is(""));
          assertThat(cookie.getExpires(), is(testDate));
      }
  
      @Test
      public void ShouldparseCookieWithExpiryAndAValueCorrectly() {
          Date testDate = getTestDate(2010, 8, 3, 9, 25, 3);
          final String rawCookie = "USER=bob; expires=Tue, 03-Aug-2010 09:25:03 GMT; path=/";
  
          CookieParser cookieParser = new CookieParser();
          Cookie cookie = cookieParser.parseCookie("localhost", rawCookie);
  
          assertThat(cookie.getName(), is("USER"));
          assertThat(cookie.getValue(), is("bob"));
          assertThat(cookie.getExpires(), is(testDate));
      }
  
      @Test
      public void ShouldparseCookieWithoutExpiryAndNoValueCorrectly() {
          final String rawCookie = "USER=; path=/";
  
          CookieParser cookieParser = new CookieParser();
          Cookie cookie = cookieParser.parseCookie("localhost", rawCookie);
  
          assertThat(cookie.getName(), is("USER"));
          assertThat(cookie.getValue(), is(""));
          assertThat(cookie.getExpires(), is(nullValue()));
      }
  
      @Test
      public void ShouldparseCookieWithEqualsInTheValue() {
          final String rawCookie = "DATA=USER=bob&FullName=Bob The Builder; path=/";
  
          CookieParser cookieParser = new CookieParser();
          Cookie cookie = cookieParser.parseCookie("localhost", rawCookie);
  
          assertThat(cookie.getName(), is("DATA"));
          assertThat(cookie.getValue(), is("USER=bob&FullName=Bob The Builder"));
          assertThat(cookie.getExpires(), is(nullValue()));
      }
  }
  