aboutsummaryrefslogtreecommitdiffstats
path: root/upstream/odl-aaa-moon/aaa/aaa-authn-store/src/test/java/org/opendaylight/aaa/store/DefaultTokenStoreTest.java
blob: e5c837bff4f18ebc4b05526b4a3aa2260f3dc4eb (plain)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
 * Copyright (c) 2014, 2015 Hewlett-Packard Development Company, L.P. and others.  All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */

package org.opendaylight.aaa.store;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;
import static org.opendaylight.aaa.store.DefaultTokenStore.MAX_CACHED_DISK;
import static org.opendaylight.aaa.store.DefaultTokenStore.MAX_CACHED_MEMORY;
import static org.opendaylight.aaa.store.DefaultTokenStore.SECS_TO_IDLE;
import static org.opendaylight.aaa.store.DefaultTokenStore.SECS_TO_LIVE;

import java.util.Dictionary;
import java.util.Hashtable;
import org.apache.felix.dm.Component;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.aaa.AuthenticationBuilder;
import org.opendaylight.aaa.ClaimBuilder;
import org.opendaylight.aaa.api.Authentication;
import org.osgi.service.cm.ConfigurationException;

public class DefaultTokenStoreTest {
    private static final String FOO_TOKEN = "foo_token";
    private final DefaultTokenStore dts = new DefaultTokenStore();
    private static final Dictionary<String, String> config = new Hashtable<>();
    static {
        config.put(MAX_CACHED_MEMORY, Long.toString(3));
        config.put(MAX_CACHED_DISK, Long.toString(3));
        config.put(SECS_TO_IDLE, Long.toString(1));
        config.put(SECS_TO_LIVE, Long.toString(1));
    }

    @Before
    public void setup() throws ConfigurationException {
        dts.init(mock(Component.class));
        dts.updated(config);
    }

    @After
    public void teardown() {
        dts.destroy();
    }

    @Test
    public void testCache() throws InterruptedException {
        Authentication auth = new AuthenticationBuilder(new ClaimBuilder().setUser("foo")
                                                                          .setUserId("1234")
                                                                          .addRole("admin").build()).build();
        dts.put(FOO_TOKEN, auth);
        assertEquals(auth, dts.get(FOO_TOKEN));
        dts.delete(FOO_TOKEN);
        assertNull(dts.get(FOO_TOKEN));
        dts.put(FOO_TOKEN, auth);
        Thread.sleep(1200);
        assertNull(dts.get(FOO_TOKEN));
    }

}