1b28a5538SAdam Hornacek /* 2b28a5538SAdam Hornacek * CDDL HEADER START 3b28a5538SAdam Hornacek * 4b28a5538SAdam Hornacek * The contents of this file are subject to the terms of the 5b28a5538SAdam Hornacek * Common Development and Distribution License (the "License"). 6b28a5538SAdam Hornacek * You may not use this file except in compliance with the License. 7b28a5538SAdam Hornacek * 8b28a5538SAdam Hornacek * See LICENSE.txt included in this distribution for the specific 9b28a5538SAdam Hornacek * language governing permissions and limitations under the License. 10b28a5538SAdam Hornacek * 11b28a5538SAdam Hornacek * When distributing Covered Code, include this CDDL HEADER in each 12b28a5538SAdam Hornacek * file and include the License file at LICENSE.txt. 13b28a5538SAdam Hornacek * If applicable, add the following below this CDDL HEADER, with the 14b28a5538SAdam Hornacek * fields enclosed by brackets "[]" replaced with your own identifying 15b28a5538SAdam Hornacek * information: Portions Copyright [yyyy] [name of copyright owner] 16b28a5538SAdam Hornacek * 17b28a5538SAdam Hornacek * CDDL HEADER END 18b28a5538SAdam Hornacek */ 19b28a5538SAdam Hornacek 20b28a5538SAdam Hornacek /* 21*2f7dccc7SAdam Hornacek * Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved. 22b28a5538SAdam Hornacek */ 23b28a5538SAdam Hornacek package opengrok.auth.plugin.util; 24b28a5538SAdam Hornacek 25*2f7dccc7SAdam Hornacek import org.junit.jupiter.api.Test; 26*2f7dccc7SAdam Hornacek 27b28a5538SAdam Hornacek import java.util.Date; 28*2f7dccc7SAdam Hornacek 29*2f7dccc7SAdam Hornacek import static org.junit.jupiter.api.Assertions.assertEquals; 30*2f7dccc7SAdam Hornacek import static org.junit.jupiter.api.Assertions.assertThrows; 31b28a5538SAdam Hornacek 32b28a5538SAdam Hornacek /** 33b28a5538SAdam Hornacek * 34b28a5538SAdam Hornacek * @author ktulinge 35b28a5538SAdam Hornacek */ 36b28a5538SAdam Hornacek public class TimestampTest { 37b28a5538SAdam Hornacek 38b28a5538SAdam Hornacek /** 39b28a5538SAdam Hornacek * Test of valid timestamp cookies and their decoded values. 40b28a5538SAdam Hornacek */ 41b28a5538SAdam Hornacek @Test testDecodeTimestamp()42b28a5538SAdam Hornacek public void testDecodeTimestamp() { 43b28a5538SAdam Hornacek String[] tests = { 44b28a5538SAdam Hornacek "123456", 45b28a5538SAdam Hornacek "5761172f", 46b28a5538SAdam Hornacek "abcdef09", 47b28a5538SAdam Hornacek "58cfe588" 48b28a5538SAdam Hornacek }; 49b28a5538SAdam Hornacek 501161d3e8SAdam Hornacek long[] expected = { 51b28a5538SAdam Hornacek 1193046000L, 52b28a5538SAdam Hornacek 1465980719000L, 53b28a5538SAdam Hornacek 2882400009000L, 54b28a5538SAdam Hornacek 1490019720000L 55b28a5538SAdam Hornacek }; 56b28a5538SAdam Hornacek 57b28a5538SAdam Hornacek for (int i = 0; i < tests.length; i++) { 58*2f7dccc7SAdam Hornacek assertEquals(expected[i], Timestamp.decodeTimeCookie(tests[i]).getTime()); 59b28a5538SAdam Hornacek } 60b28a5538SAdam Hornacek } 61b28a5538SAdam Hornacek 62b28a5538SAdam Hornacek /** 63b28a5538SAdam Hornacek * Test of invalid timestamp cookies. 64b28a5538SAdam Hornacek */ 65b28a5538SAdam Hornacek @Test testInvalidDecodeTimestamp()66b28a5538SAdam Hornacek public void testInvalidDecodeTimestamp() { 67b28a5538SAdam Hornacek String[] tests = { 68b28a5538SAdam Hornacek "sd45gfgf5sd4g5ffd54g", 69b28a5538SAdam Hornacek "ě5 1g56ew1tč6516re5g1g65d1g65d", 70b28a5538SAdam Hornacek "abcegkjkjsdlkjg", 71b28a5538SAdam Hornacek "" 72b28a5538SAdam Hornacek }; 73b28a5538SAdam Hornacek 741161d3e8SAdam Hornacek for (String test : tests) { 75*2f7dccc7SAdam Hornacek assertThrows(Exception.class, () -> Timestamp.decodeTimeCookie(test).getTime(), 76*2f7dccc7SAdam Hornacek "Decoding should throw an exception - invalid format"); 77b28a5538SAdam Hornacek } 78b28a5538SAdam Hornacek } 79b28a5538SAdam Hornacek 80b28a5538SAdam Hornacek /** 81b28a5538SAdam Hornacek * Test of encoded cookies. 82b28a5538SAdam Hornacek */ 83b28a5538SAdam Hornacek @Test testEncodeTimestamp()84b28a5538SAdam Hornacek public void testEncodeTimestamp() { 851161d3e8SAdam Hornacek Date[] tests = { 86b28a5538SAdam Hornacek new Date(Long.parseLong("1193046000")), 87b28a5538SAdam Hornacek new Date(Long.parseLong("1465980719000")), 88b28a5538SAdam Hornacek new Date(Long.parseLong("2882400009000")), 89b28a5538SAdam Hornacek new Date(1490019720000L), // 2017-03-20 14:22:00 90b28a5538SAdam Hornacek }; 91b28a5538SAdam Hornacek 92b28a5538SAdam Hornacek String[] expected = { 93b28a5538SAdam Hornacek "123456", 94b28a5538SAdam Hornacek "5761172f", 95b28a5538SAdam Hornacek "abcdef09", 96b28a5538SAdam Hornacek "58cfe588" 97b28a5538SAdam Hornacek }; 98b28a5538SAdam Hornacek 99b28a5538SAdam Hornacek for (int i = 0; i < tests.length; i++) { 100*2f7dccc7SAdam Hornacek assertEquals(expected[i], Timestamp.encodeTimeCookie(tests[i])); 101b28a5538SAdam Hornacek } 102b28a5538SAdam Hornacek } 103b28a5538SAdam Hornacek } 104