blob: 9c1c31432c6a7fb07d992467d05dbeb5e6395649 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.cookies;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* Unit test serialization code.
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class CanonicalCookieTest {
// Name meant to match CanonicalCookie method.
private static byte[] saveListToStream(final List<CanonicalCookie> cookies)
throws Exception {
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outByteStream);
try {
CanonicalCookie cookiesArray[] = new CanonicalCookie[cookies.size()];
cookies.toArray(cookiesArray);
CanonicalCookie.saveListToStream(out, cookiesArray);
} finally {
out.close();
outByteStream.close();
}
return outByteStream.toByteArray();
}
// Name meant to match CanonicalCookie method.
private static List<CanonicalCookie> readListFromStream(final byte[] byteArray)
throws Exception {
ByteArrayInputStream inByteStream = new ByteArrayInputStream(byteArray);
DataInputStream in = new DataInputStream(inByteStream);
try {
return CanonicalCookie.readListFromStream(in);
} finally {
in.close();
inByteStream.close();
}
}
private static void assertCookiesEqual(CanonicalCookie lhs, CanonicalCookie rhs) {
Assert.assertEquals(lhs.getUrl(), rhs.getUrl());
Assert.assertEquals(lhs.getName(), rhs.getName());
Assert.assertEquals(lhs.getValue(), rhs.getValue());
Assert.assertEquals(lhs.getDomain(), rhs.getDomain());
Assert.assertEquals(lhs.getPath(), rhs.getPath());
Assert.assertEquals(lhs.getCreationDate(), rhs.getCreationDate());
Assert.assertEquals(lhs.getExpirationDate(), rhs.getExpirationDate());
Assert.assertEquals(lhs.getLastAccessDate(), rhs.getLastAccessDate());
Assert.assertEquals(lhs.isSecure(), rhs.isSecure());
Assert.assertEquals(lhs.isHttpOnly(), rhs.isHttpOnly());
Assert.assertEquals(lhs.getSameSite(), rhs.getSameSite());
Assert.assertEquals(lhs.getPriority(), rhs.getPriority());
}
private static void doSaveRestoreCookiesListTest(final List<CanonicalCookie> cookies)
throws Exception {
byte[] byteArray = saveListToStream(cookies);
List<CanonicalCookie> readCookies = readListFromStream(byteArray);
Assert.assertEquals(cookies.size(), readCookies.size());
for (int i = 0; i < cookies.size(); ++i) {
assertCookiesEqual(cookies.get(i), readCookies.get(i));
}
}
@Test
public void testSaveRestoreEmptyList() throws Exception {
doSaveRestoreCookiesListTest(new ArrayList<CanonicalCookie>());
}
@Test
public void testSaveRestore() throws Exception {
ArrayList<CanonicalCookie> cookies = new ArrayList<>();
cookies.add(new CanonicalCookie("http://url", "name", "value", "domain", "path",
0 /* creation */, 1 /* expiration */, 0 /* lastAccess */, false /* secure */,
true /* httpOnly */, 0 /* sameSite */, 0 /* priority */));
cookies.add(new CanonicalCookie("http://url2", "name2", "value2", "domain2", "path2",
10 /* creation */, 20 /* expiration */, 15 /* lastAccess */, true /* secure */,
false /* httpOnly */, 1 /* sameSite */, 1 /* priority */));
cookies.add(new CanonicalCookie("http://url3", "name3", "value3", "domain3", "path3",
10 /* creation */, 20 /* expiration */, 15 /* lastAccess */, true /* secure */,
false /* httpOnly */, 2 /* sameSite */, 2 /* priority */));
doSaveRestoreCookiesListTest(cookies);
}
}