/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.airavata.credential.store.store.impl.db;
import org.apache.airavata.common.utils.DBUtil;
import org.apache.airavata.common.utils.DatabaseTestCases;
import org.apache.airavata.common.utils.DerbyUtil;
import org.apache.airavata.credential.store.credential.CommunityUser;
import org.junit.*;
import java.sql.Connection;
import java.util.List;
/**
* Test for community user DAO.
*/
public class CommunityUserDAOTest extends DatabaseTestCases {
private CommunityUserDAO communityUserDAO;
@BeforeClass
public static void setUpDatabase() throws Exception {
DerbyUtil.startDerbyInServerMode(getHostAddress(), getPort(), getUserName(), getPassword());
waitTillServerStarts();
String createTable = "CREATE TABLE COMMUNITY_USER\n" + " (\n"
+ " GATEWAY_ID VARCHAR(256) NOT NULL,\n"
+ " COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,\n"
+ " TOKEN_ID VARCHAR(256) NOT NULL,\n"
+ " COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,\n"
+ " PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)\n"
+ " )";
String dropTable = "drop table COMMUNITY_USER";
try {
executeSQL(dropTable);
} catch (Exception e) {
}
executeSQL(createTable);
}
@AfterClass
public static void shutDownDatabase() throws Exception {
DerbyUtil.stopDerbyServer();
}
@Before
public void setUp() throws Exception {
communityUserDAO = new CommunityUserDAO();
Connection connection = getDbUtil().getConnection();
try {
DBUtil.truncate("community_user", connection);
} finally {
connection.close();
}
}
@Test
public void testAddCommunityUser() throws Exception {
Connection connection = getConnection();
try {
CommunityUser communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token1", connection);
communityUser = new CommunityUser("gw1", "ogce2", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token2", connection);
CommunityUser user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNotNull(user);
Assert.assertEquals("ogce@sciencegateway.org", user.getUserEmail());
user = communityUserDAO.getCommunityUser("gw1", "ogce2", connection);
Assert.assertNotNull(user);
Assert.assertEquals("ogce@sciencegateway.org", user.getUserEmail());
user = communityUserDAO.getCommunityUserByToken("gw1", "Token1", connection);
Assert.assertNotNull(user);
Assert.assertEquals("ogce", user.getUserName());
Assert.assertEquals("ogce@sciencegateway.org", user.getUserEmail());
user = communityUserDAO.getCommunityUserByToken("gw1", "Token2", connection);
Assert.assertNotNull(user);
Assert.assertEquals("ogce2", user.getUserName());
Assert.assertEquals("ogce@sciencegateway.org", user.getUserEmail());
} finally {
connection.close();
}
}
@Test
public void testDeleteCommunityUser() throws Exception {
Connection connection = getConnection();
try {
CommunityUser communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token1", connection);
CommunityUser user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNotNull(user);
communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.deleteCommunityUser(communityUser, connection);
user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNull(user);
} finally {
connection.close();
}
}
@Test
public void testDeleteCommunityUserByToken() throws Exception {
Connection connection = getConnection();
try {
CommunityUser communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token1", connection);
CommunityUser user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNotNull(user);
communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.deleteCommunityUserByToken(communityUser, "Token1", connection);
user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNull(user);
} finally {
connection.close();
}
}
@Test
public void testGetCommunityUsers() throws Exception {
Connection connection = getConnection();
try {
CommunityUser communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token1", connection);
CommunityUser user = communityUserDAO.getCommunityUser("gw1", "ogce", connection);
Assert.assertNotNull(user);
Assert.assertEquals("ogce@sciencegateway.org", user.getUserEmail());
} finally {
connection.close();
}
}
@Test
public void testGetCommunityUsersForGateway() throws Exception {
Connection connection = getConnection();
CommunityUser communityUser = new CommunityUser("gw1", "ogce", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token1", connection);
communityUser = new CommunityUser("gw1", "ogce2", "ogce@sciencegateway.org");
communityUserDAO.addCommunityUser(communityUser, "Token2", connection);
List<CommunityUser> users = communityUserDAO.getCommunityUsers("gw1", connection);
Assert.assertNotNull(users);
Assert.assertEquals(2, users.size());
Assert.assertEquals(users.get(0).getUserName(), "ogce");
Assert.assertEquals(users.get(1).getUserName(), "ogce2");
}
}