Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import static org.assertj.core.api.Assertions.assertThat;
      4 
      5 import android.webkit.CookieManager;
      6 import org.junit.Test;
      7 import org.junit.runner.RunWith;
      8 import org.robolectric.RobolectricTestRunner;
      9 
     10 @RunWith(RobolectricTestRunner.class)
     11 public class ShadowCookieManagerTest {
     12   private final String url = "robolectric.org/";
     13   private final String httpUrl = "http://robolectric.org/";
     14   private final String httpsUrl = "https://robolectric.org/";
     15   private final CookieManager cookieManager = CookieManager.getInstance();
     16 
     17   @Test
     18   public void shouldGetASingletonInstance() {
     19     assertThat(CookieManager.getInstance()).isNotNull();
     20     assertThat(CookieManager.getInstance()).isSameAs(CookieManager.getInstance());
     21   }
     22 
     23   @Test
     24   public void shouldSetAndGetACookie() {
     25     CookieManager cookieManager = CookieManager.getInstance();
     26     String url = "http://www.google.com";
     27     String value = "my cookie";
     28     cookieManager.setCookie(url, value);
     29     assertThat(cookieManager.getCookie(url)).isEqualTo(value);
     30   }
     31 
     32   @Test
     33   public void shouldGetCookieForUrl() {
     34     CookieManager cookieManager = CookieManager.getInstance();
     35     String url1 = "http://www.google.com";
     36     String value1 = "my cookie";
     37     cookieManager.setCookie(url1, value1);
     38 
     39     String url2 = "http://www.hotbot.com";
     40     String value2 = "some special value: thing";
     41     cookieManager.setCookie(url2, value2);
     42 
     43     assertThat(cookieManager.getCookie("http://www.google.com")).isEqualTo(value1);
     44     assertThat(cookieManager.getCookie(url2)).isEqualTo(value2);
     45   }
     46 
     47   @Test
     48   public void shouldGetCookieForHostInDomain() {
     49     CookieManager cookieManager = CookieManager.getInstance();
     50     String value1 = "my cookie";
     51     cookieManager.setCookie("foo.com/this%20is%20a%20test", value1);
     52 
     53     assertThat(cookieManager.getCookie(".foo.com")).isEqualTo(value1);
     54   }
     55 
     56   @Test
     57   public void shouldNotGetCookieForHostNotInDomain() {
     58     CookieManager cookieManager = CookieManager.getInstance();
     59     String value1 = "my cookie";
     60     cookieManager.setCookie("bar.foo.com/this%20is%20a%20test", value1);
     61 
     62     assertThat(cookieManager.getCookie(".bar.com")).isNull();
     63   }
     64 
     65   @Test
     66   public void shouldGetCookieForHostInSubDomain() {
     67     CookieManager cookieManager = CookieManager.getInstance();
     68     String value1 = "my cookie";
     69     cookieManager.setCookie("host.in.subdomain.bar.com", value1);
     70 
     71     assertThat(cookieManager.getCookie(".bar.com")).isEqualTo(value1);
     72   }
     73 
     74   @Test
     75   public void shouldGetCookieForHostInDomainDefinedWithProtocol() {
     76     CookieManager cookieManager = CookieManager.getInstance();
     77     String value1 = "my cookie";
     78     cookieManager.setCookie("qutz.com/", value1);
     79 
     80     assertThat(cookieManager.getCookie("http://.qutz.com")).isEqualTo(value1);
     81   }
     82 
     83   @Test
     84   public void shouldRecordAcceptCookie() {
     85     CookieManager cookieManager = CookieManager.getInstance();
     86     cookieManager.setCookie("foo", "bar");
     87     cookieManager.setCookie("baz", "qux");
     88     assertThat(cookieManager.getCookie("foo")).isNotNull();
     89     cookieManager.removeAllCookie();
     90     assertThat(cookieManager.getCookie("foo")).isNull();
     91     assertThat(cookieManager.getCookie("baz")).isNull();
     92   }
     93 
     94   @Test
     95   public void shouldHaveCookieWhenCookieIsSet() {
     96     cookieManager.setCookie(url, "name=value; Expires=Wed, 09 Jun 2021 10:18:14 GMT");
     97     assertThat(cookieManager.hasCookies()).isEqualTo(true);
     98   }
     99 
    100   @Test
    101   public void shouldNotHaveCookieWhenCookieIsNotSet() {
    102     assertThat(cookieManager.hasCookies()).isEqualTo(false);
    103   }
    104 
    105   @Test
    106   public void shouldGetNullWhenCookieIsNotPresent() {
    107     assertThat(cookieManager.getCookie(url)).isNull();
    108   }
    109 
    110   @Test
    111   public void shouldGetNullWhenCookieIsNotPresentInUrl() {
    112     cookieManager.setCookie(httpUrl, "name=value; Expires=Wed, 11 Jul 2035 08:12:26 GMT");
    113     assertThat(cookieManager.getCookie("http://google.com")).isNull();
    114   }
    115 
    116   @Test
    117   public void shouldSetAndGetOneCookie() {
    118     cookieManager.setCookie(httpUrl, "name=value; Expires=Wed, 11 Jul 2035 08:12:26 GMT");
    119     assertThat(cookieManager.getCookie(httpUrl)).isEqualTo("name=value");
    120   }
    121 
    122   @Test
    123   public void shouldSetWithHttpAndGetWithoutHttp() {
    124     cookieManager.setCookie(httpUrl, "name=value; Expires=Wed, 11 Jul 2035 08:12:26 GMT");
    125     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value");
    126   }
    127 
    128   @Test
    129   public void shouldSetWithHttpAndGetWithHttps() {
    130     cookieManager.setCookie(httpUrl, "name=value; Expires=Wed, 11 Jul 2035 08:12:26 GMT");
    131     assertThat(cookieManager.getCookie(httpsUrl)).isEqualTo("name=value");
    132   }
    133 
    134   @Test
    135   public void shouldSetTwoCookies() {
    136     cookieManager.setCookie(url, "name=value; Expires=Wed, 09 Jun 2021 10:18:14 GMT");
    137     cookieManager.setCookie(url, "name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT");
    138     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value; name2=value2");
    139   }
    140 
    141   @Test
    142   public void shouldSetCookieWithInvalidExpiesValue() {
    143     cookieManager.setCookie(httpUrl, "name=value; Expires=3234asdfasdf10:18:14 GMT");
    144     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value");
    145   }
    146 
    147   @Test
    148   public void shouldSetCookieWithoutValue() {
    149     cookieManager.setCookie(httpUrl, "name=");
    150     assertThat(cookieManager.getCookie(url)).isEqualTo("name=");
    151   }
    152 
    153   @Test
    154   public void shouldSetCookieWithNameOnly() {
    155     cookieManager.setCookie(httpUrl, "name");
    156     assertThat(cookieManager.getCookie(url)).isEqualTo("name");
    157   }
    158 
    159   @Test
    160   public void testSetAndGetCookieWhenAcceptCookieIsFalse() {
    161     cookieManager.setAcceptCookie(false);
    162     cookieManager.setCookie(httpUrl, "name=value; Expires=3234asdfasdf10:18:14 GMT");
    163     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value");
    164     assertThat(cookieManager.acceptCookie()).isEqualTo(false);
    165   }
    166 
    167   @Test
    168   public void shouldRemoveAllCookie() {
    169     cookieManager.setCookie(url, "name=value; Expires=Wed, 09 Jun 2021 10:18:14 GMT");
    170     cookieManager.setCookie(url, "name2=value2;");
    171     cookieManager.removeAllCookie();
    172     assertThat(cookieManager.getCookie(url)).isNull();
    173   }
    174 
    175   @Test
    176   public void shouldRemoveExpiredCookie() {
    177     cookieManager.setCookie(url, "name=value; Expires=Wed, 11 Jul 2035 10:18:14 GMT");
    178     cookieManager.setCookie(url, "name2=value2; Expires=Wed, 13 Jul 2011 10:18:14 GMT");
    179     cookieManager.removeExpiredCookie();
    180     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value");
    181   }
    182 
    183   @Test
    184   public void shouldRemoveSessionCookie() {
    185     cookieManager.setCookie(url, "name=value; Expires=Wed, 09 Jun 2021 10:18:14 GMT");
    186     cookieManager.setCookie(url, "name2=value2;");
    187     cookieManager.removeSessionCookie();
    188     assertThat(cookieManager.getCookie(url)).isEqualTo("name=value");
    189   }
    190 
    191   @Test
    192   public void shouldIgnoreCookiesSetInThePast() {
    193     cookieManager.setCookie(url, "name=value; Expires=Wed, 09-Jun-2000 10:18:14 GMT");
    194 
    195     String url2 = "http://android.com";
    196     cookieManager.setCookie(url2, "name2=value2; Expires=Wed, 09 Jun 2000 10:18:14 GMT");
    197 
    198     assertThat(cookieManager.getCookie(url)).isNull();
    199     assertThat(cookieManager.getCookie(url2)).isNull();
    200   }
    201 
    202   @Test
    203   public void shouldRespectSecureCookies() {
    204     cookieManager.setCookie(httpsUrl, "name1=value1;secure");
    205     cookieManager.setCookie(httpUrl, "name2=value2;");
    206 
    207     String cookie = cookieManager.getCookie(httpUrl);
    208     assertThat(cookie.contains("name2=value2")).isTrue();
    209     assertThat(cookie.contains("name1=value1")).isFalse();
    210   }
    211 
    212   @Test
    213   public void shouldIgnoreEmptyURLs() {
    214     assertThat(cookieManager.getCookie("")).isNull();
    215   }
    216 }
    217