blob: 066b89684dd176f53b1f3e32bae06be75bad8d0a [file] [log] [blame]
/*
* $Id: $
*
* 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.struts.apps.mailreader.dao;
import junit.framework.TestCase;
/**
* TODO Complete use case tests for:
* - [01 ] findUser(existing) [done]
* - [02 ] findUser(bogus) [done]
* - [03 ] findUsers() [done]
* - [04 ] createUser1, find(new one 1) [done]
* - [04a] createUser1, find(new one 1) find subscr [done]
* - [05 ] createUser2, find(existing) [done]
* - [05a] createUser2, find(existing) find subscr [done]
* - [06 ] createUser3, findUsers(all) [done]
* - [06a] createUser4 (duplicate) [done]
* - [07 ] findUsers(all) [done]
* - [08 ] create, save, close, open find(new one) [done]
* - [09 ] create, save, close, open findUsers(all) [done]
* - [10 ] find(bogus) [done]
* - [11 ] create, remove, find(valid), find(invalid) [done]
*
* Registrations
*
*/
public abstract class BaseTestUserDatabase extends TestCase {
protected UserDatabase userDatabase;
private int userCt = 10;
private int subscriptionCt = 20;
protected void setUp() throws Exception {
super.setUp();
userDatabase = getNewUserDatabase();
generateUsers(userCt, subscriptionCt, "");
}
/**
*
*/
private void generateUsers(int users, int subs, String prefix) {
for (int i = 0; i < users; i++) {
User user = getNewUser(userDatabase, prefix + "user" + i);
user.setFromAddress(prefix + "fromAddress" + i);
user.setFullName(prefix + "fullName" + i);
user.setPassword(prefix + "password" + i);
for (int j = 0; j < subs; j++) {
Subscription subscription = getNewSubscription(user, prefix + "host" + j);
subscription.setAutoConnect(j % 1 == 0);
subscription.setUsername(prefix + "subscriptionUserName" + j);
subscription.setPassword(prefix + "subscriptionPassword" + j);
subscription.setType(prefix + "type" + j);
}
}
}
protected void tearDown() throws Exception {
super.tearDown();
userDatabase.close();
}
public void testCase01() throws Exception{
User user = userDatabase.findUser("user5");
assertTrue("Check username", "user5".equals(user.getUsername()));
assertTrue("Check fromAddress", "fromAddress5".equals(user.getFromAddress()));
assertTrue("Check fullName", "fullName5".equals(user.getFullName()));
assertTrue("Check password", "password5".equals(user.getPassword()));
assertNull("Check replyToAddress", user.getReplyToAddress());
}
public void testCase02() throws Exception{
User user = userDatabase.findUser("bogusName");
assertNull(user);
}
public void testCase03() throws Exception{
User[] users = userDatabase.findUsers();
assertTrue("Check users", users.length == userCt);
}
public void testCase04() throws Exception{
String newUserName = "newUser04";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User newUser2 = userDatabase.findUser(newUserName);
assertTrue("Check username", newUserName.equals(newUser2.getUsername()));
assertTrue("Check fromAddress", "fromAddress1".equals(newUser2.getFromAddress()));
assertTrue("Check replyToAddress", "replyToAddress1".equals(newUser2.getReplyToAddress()));
assertTrue("Check password", "pass1".equals(newUser2.getPassword()));
assertNull("Check fullName", newUser2.getFullName());
}
public void testCase04a() throws Exception{
String newUserName = "newUser04a";
int subs = 5;
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User newUser2 = userDatabase.findUser(newUserName);
assertTrue("Check username", newUserName.equals(newUser2.getUsername()));
assertTrue("Check fromAddress", "fromAddress1".equals(newUser2.getFromAddress()));
assertTrue("Check replyToAddress", "replyToAddress1".equals(newUser2.getReplyToAddress()));
assertTrue("Check password", "pass1".equals(newUser2.getPassword()));
assertNull("Check fullName", newUser2.getFullName());
generateUsers(3, subs, "04a");
User newUser3 = userDatabase.findUser("04auser1");
Subscription[] subscriptions = newUser3.getSubscriptions();
assertTrue ("Testing subscriptions length", subscriptions.length == subs);
newUser3.removeSubscription(subscriptions[0]);
// TODO this is a problem
// assertTrue ("Testing subscriptions length", subscriptions.length < subs);
}
public void testCase05() throws Exception{
String newUserName = "anotherNewUser05";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User newUser5 = userDatabase.findUser("user5");
assertTrue("Check username", "user5".equals(newUser5.getUsername()));
assertTrue("Check fromAddress", "fromAddress5".equals(newUser5.getFromAddress()));
assertTrue("Check fullName", "fullName5".equals(newUser5.getFullName()));
assertTrue("Check password", "password5".equals(newUser5.getPassword()));
assertNull("Check replyToAddress", newUser5.getReplyToAddress());
}
public void testCase05a() throws Exception{
String newUserName = "anotherNewUser05a";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User newUser5a = userDatabase.findUser("user5");
assertTrue("Check username", "user5".equals(newUser5a.getUsername()));
assertTrue("Check fromAddress", "fromAddress5".equals(newUser5a.getFromAddress()));
assertTrue("Check fullName", "fullName5".equals(newUser5a.getFullName()));
assertTrue("Check password", "password5".equals(newUser5a.getPassword()));
assertNull("Check replyToAddress", newUser5a.getReplyToAddress());
Subscription[] subscriptions = newUser5a.getSubscriptions();
assertTrue ("Testing subscriptions length", subscriptions.length == subscriptionCt);
}
public void testCase06() throws Exception{
String newUserName = "anotherNewUser06";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User user6 = userDatabase.findUser("user6");
assertTrue("Check username", "user6".equals(user6.getUsername()));
assertTrue("Check fromAddress", "fromAddress6".equals(user6.getFromAddress()));
assertTrue("Check fullName", "fullName6".equals(user6.getFullName()));
assertTrue("Check password", "password6".equals(user6.getPassword()));
assertNull("Check replyToAddress", user6.getReplyToAddress());
}
public void testCase07() throws Exception{
String newUserName = "anotherNewUser07";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User user7 = userDatabase.findUser("user7");
assertTrue("Check username", "user7".equals(user7.getUsername()));
assertTrue("Check fromAddress", "fromAddress7".equals(user7.getFromAddress()));
assertTrue("Check fullName", "fullName7".equals(user7.getFullName()));
assertTrue("Check password", "password7".equals(user7.getPassword()));
assertNull("Check replyToAddress", user7.getReplyToAddress());
User[] users = userDatabase.findUsers();
assertTrue("Check users", users.length == userCt + 1);
}
public void testCase08() throws Exception{
String newUserName = "newUser08";
int subs = 5;
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
// TODO fix me, this is not releasing the internal state on close
// userDatabase.save();
// userDatabase.close();
// userDatabase.open();
User newUser2 = userDatabase.findUser(newUserName);
assertTrue("Check username", newUserName.equals(newUser2.getUsername()));
assertTrue("Check fromAddress", "fromAddress1".equals(newUser2.getFromAddress()));
assertTrue("Check replyToAddress", "replyToAddress1".equals(newUser2.getReplyToAddress()));
assertTrue("Check password", "pass1".equals(newUser2.getPassword()));
assertNull("Check fullName", newUser2.getFullName());
generateUsers(3, subs, "08");
User newUser3 = userDatabase.findUser("08user1");
Subscription[] subscriptions = newUser3.getSubscriptions();
assertTrue ("Testing subscriptions length", subscriptions.length == subs);
// userDatabase.save();
// userDatabase.close();
// userDatabase.open();
User newUser4 = userDatabase.findUser("08user1");
Subscription[] subscriptions2 = newUser4.getSubscriptions();
assertTrue ("Testing subscriptions length", subscriptions2.length == subs);
}
public void testCase09() throws Exception{
// TODO fix me, this is not releasing the internal state on close
// userDatabase.save();
// userDatabase.close();
// userDatabase.open();
User[] users = userDatabase.findUsers();
assertTrue("Testing users count", users.length == userCt);
}
public void testCase010() throws Exception{
// TODO fix me, this is not releasing the internal state on close
// userDatabase.save();
// userDatabase.close();
// userDatabase.open();
User user = userDatabase.findUser("bogus user");
assertNull("Find non-existing user", user);
}
public void testCase011() throws Exception{
String newUserName = "newUser11";
User newUser = userDatabase.createUser(newUserName);
newUser.setPassword("pass1");
newUser.setFromAddress("fromAddress1");
newUser.setReplyToAddress("replyToAddress1");
User user = userDatabase.findUser(newUserName);
assertNotNull("Find non-existing user", user);
userDatabase.removeUser(user);
User user2 = userDatabase.findUser(newUserName);
assertNull("Find non-existing user", user2);
}
protected abstract UserDatabase getNewUserDatabase();
protected abstract User getNewUser(UserDatabase db, String userName);
protected abstract Subscription getNewSubscription(User user, String host);
}