/* * $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); }