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