2 * Copyright (c) 2014, 2016 Hewlett-Packard Development Company, L.P. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.aaa.datastore.h2;
10 import static org.junit.Assert.assertTrue;
11 import static org.mockito.ArgumentMatchers.anyString;
12 import static org.mockito.Mockito.mock;
13 import static org.mockito.Mockito.verify;
15 import java.sql.Connection;
16 import java.sql.DatabaseMetaData;
17 import java.sql.PreparedStatement;
18 import java.sql.ResultSet;
19 import java.sql.SQLException;
20 import org.junit.Test;
21 import org.mockito.Mockito;
22 import org.opendaylight.aaa.api.model.Grants;
24 public class GrantStoreTest {
26 private final Connection connectionMock = mock(Connection.class);
28 private final ConnectionProvider connectionFactoryMock = () -> connectionMock;
30 private final GrantStore grantStoreUnderTest = new GrantStore(connectionFactoryMock);
32 private final String did = "5";
33 private final String uid = "5";
36 public void getGrantsTest() throws Exception {
37 // Setup Mock Behavior
38 String[] tableTypes = { "TABLE" };
39 Mockito.when(connectionMock.isClosed()).thenReturn(false);
40 DatabaseMetaData dbmMock = mock(DatabaseMetaData.class);
41 Mockito.when(connectionMock.getMetaData()).thenReturn(dbmMock);
42 ResultSet rsUserMock = mock(ResultSet.class);
43 Mockito.when(dbmMock.getTables(null, null, "GRANTS", tableTypes)).thenReturn(rsUserMock);
44 Mockito.when(rsUserMock.next()).thenReturn(true);
46 PreparedStatement pstmtMock = mock(PreparedStatement.class);
47 Mockito.when(connectionMock.prepareStatement(anyString())).thenReturn(pstmtMock);
49 ResultSet rsMock = getMockedResultSet();
50 Mockito.when(pstmtMock.executeQuery()).thenReturn(rsMock);
53 Grants grants = grantStoreUnderTest.getGrants(did, uid);
56 assertTrue(grants.getGrants().size() == 1);
57 verify(pstmtMock).close();
60 public ResultSet getMockedResultSet() throws SQLException {
61 ResultSet rsMock = mock(ResultSet.class);
62 Mockito.when(rsMock.next()).thenReturn(true).thenReturn(false);
63 Mockito.when(rsMock.getInt(GrantStore.SQL_ID)).thenReturn(1);
64 Mockito.when(rsMock.getString(GrantStore.SQL_TENANTID)).thenReturn(did);
65 Mockito.when(rsMock.getString(GrantStore.SQL_USERID)).thenReturn(uid);
66 Mockito.when(rsMock.getString(GrantStore.SQL_ROLEID)).thenReturn("Role_1");