xref: /OpenGrok/plugins/src/test/java/opengrok/auth/plugin/util/TimestampTest.java (revision 2f7dccc7cd05ce1957006b093948d5359068ae4f)
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