1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.client5.http.impl.cookie;
29
30 import java.io.ByteArrayInputStream;
31 import java.io.ByteArrayOutputStream;
32 import java.io.ObjectInputStream;
33 import java.io.ObjectOutputStream;
34 import java.time.Instant;
35 import java.time.temporal.ChronoUnit;
36 import java.util.List;
37
38 import org.apache.hc.client5.http.cookie.BasicCookieStore;
39 import org.apache.hc.client5.http.cookie.Cookie;
40 import org.junit.jupiter.api.Assertions;
41 import org.junit.jupiter.api.Test;
42
43
44
45
46 class TestBasicCookieStore {
47
48 @Test
49 void testBasics() {
50 final BasicCookieStore store = new BasicCookieStore();
51 store.addCookie(new BasicClientCookie("name1", "value1"));
52 store.addCookies(new BasicClientCookie[] {new BasicClientCookie("name2", "value2")});
53 List<Cookie> list = store.getCookies();
54 Assertions.assertNotNull(list);
55 Assertions.assertEquals(2, list.size());
56 Assertions.assertEquals("name1", list.get(0).getName());
57 Assertions.assertEquals("name2", list.get(1).getName());
58 store.clear();
59 list = store.getCookies();
60 Assertions.assertNotNull(list);
61 Assertions.assertEquals(0, list.size());
62 }
63
64 @Test
65 void testExpiredCookie() {
66 final BasicCookieStore store = new BasicCookieStore();
67 final BasicClientCookie cookie = new BasicClientCookie("name1", "value1");
68
69 final Instant minus_10_days = Instant.now().minus(10, ChronoUnit.DAYS);
70 cookie.setExpiryDate(minus_10_days);
71 store.addCookie(cookie);
72 final List<Cookie> list = store.getCookies();
73 Assertions.assertNotNull(list);
74 Assertions.assertEquals(0, list.size());
75 }
76
77 @Test
78 void testSerialization() throws Exception {
79 final BasicCookieStore orig = new BasicCookieStore();
80 orig.addCookie(new BasicClientCookie("name1", "value1"));
81 orig.addCookie(new BasicClientCookie("name2", "value2"));
82 final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
83 final ObjectOutputStream outStream = new ObjectOutputStream(outbuffer);
84 outStream.writeObject(orig);
85 outStream.close();
86 final byte[] raw = outbuffer.toByteArray();
87 final ByteArrayInputStream inBuffer = new ByteArrayInputStream(raw);
88 final ObjectInputStream inStream = new ObjectInputStream(inBuffer);
89 final BasicCookieStore clone = (BasicCookieStore) inStream.readObject();
90 final List<Cookie> expected = orig.getCookies();
91 final List<Cookie> clones = clone.getCookies();
92 Assertions.assertNotNull(expected);
93 Assertions.assertNotNull(clones);
94 Assertions.assertEquals(expected.size(), clones.size());
95 for (int i = 0; i < expected.size(); i++) {
96 Assertions.assertEquals(expected.get(i).getName(), clones.get(i).getName());
97 Assertions.assertEquals(expected.get(i).getValue(), clones.get(i).getValue());
98 }
99 }
100
101 }