blob: 92b9040e348f2f1bf989d5fc5ba7ad35b24b3897 [file] [log] [blame]
/*
* $Id: Subscription.java 149009 2005-01-29 05:33:02Z jmitchell $
*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed 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;
/**
* We have use case tests for:
* - [01 ] findUser(existing) [DONE]
* - [02 ] findUser(bogus) [DONE]
* - [03 ] findUsers() [DONE]
* ---------------------------------------------------------------
* lab 1-3 - Complete some or all of the remaining use cases
* ---------------------------------------------------------------
* - [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]
*
*/
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();
}
// findUser(existing)
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());
}
// findUser(bogus)
public void testCase02() throws Exception{
User user = userDatabase.findUser("bogusName");
assertNull(user);
}
// findUsers()
public void testCase03() throws Exception{
User[] users = userDatabase.findUsers();
assertTrue("Check users", users.length == userCt);
}
// createUser1, find(new one 1)
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());
}
// createUser1, find(new one 1) find subscr
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);
}
// createUser2, find(existing)
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());
}
// createUser2, find(existing) find subscr
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);
}
// createUser3, findUsers(all)
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());
}
// createUser4 (duplicate)
// public void testCase06a() throws Exception{
// findUsers(all)
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);
}
// create, save, close, open find(new one)
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);
}
// create, save, close, open findUsers(all)
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);
}
// find(bogus)
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);
}
// create, remove, find(valid), find(invalid)
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 new user", user);
userDatabase.removeUser(user);
User user2 = userDatabase.findUser(newUserName);
assertNull("Remove new user", user2);
}
protected abstract UserDatabase getNewUserDatabase();
protected abstract User getNewUser(UserDatabase db, String userName);
protected abstract Subscription getNewSubscription(User user, String host);
}