001: package org.tigris.scarab.om;
002:
003: /* ================================================================
004: * Copyright (c) 2000-2002 CollabNet. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by Collab.Net <http://www.Collab.Net/>."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" or
028: * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
029: * prior written permission of Collab.Net.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of Collab.Net.
047: */
048:
049: import java.io.File;
050:
051: import org.apache.commons.configuration.BaseConfiguration;
052: import org.apache.commons.configuration.Configuration;
053: import org.apache.commons.fileupload.DefaultFileItemFactory;
054: import org.apache.commons.fileupload.FileItem;
055: import org.apache.commons.fileupload.FileItemFactory;
056: import org.apache.torque.om.NumberKey;
057: import org.tigris.scarab.test.BaseScarabTestCase;
058:
059: /**
060: * A Testing Suite for the om.Attachment class.
061: *
062: * @author <a href="mailto:elicia@collab.net">Elicia David</a>
063: * @version $Id: AttachmentTest.java 9271 2004-11-23 08:35:00Z dep4b $
064: */
065: public class AttachmentTest extends BaseScarabTestCase {
066: private Attachment comment = null;
067: private Attachment fileAttachment = null;
068: private Issue issue = null;
069:
070: public void setUp() throws Exception {
071: super .setUp();
072: comment = AttachmentManager.getInstance();
073: fileAttachment = AttachmentManager.getInstance();
074: issue = IssueManager.getInstance(new NumberKey("1"));
075:
076: }
077:
078: public void testSaveComment() throws Exception {
079: // save comment
080: comment.setName("comment");
081: comment.setData("Test comment");
082: comment
083: .setTextFields(getUser1(), issue,
084: Attachment.COMMENT__PK);
085: comment.save();
086:
087: //
088: // Make sure the comment was persisted correctly.
089: //
090: Attachment comment2 = AttachmentManager.getInstance(comment
091: .getAttachmentId());
092: assertEquals(comment2.getName(), comment.getName());
093:
094: }
095:
096: public void saveFile() throws Exception {
097: //FileItem fileItem = new DefaultFileItem(scarab/images/", "logo.gif", "image/jpeg", 6480, 10000);
098: FileItemFactory factory = new DefaultFileItemFactory(6480, null);
099: String textFieldName = "textField";
100:
101: FileItem fileItem = factory.createItem(textFieldName,
102: "image/jpeg", true, "logo.gif");
103: fileAttachment.setFile(fileItem);
104: fileAttachment.setName(fileItem.getName());
105: fileAttachment.setMimeType("image/jpeg");
106: fileAttachment.setCreatedBy(getUser1().getUserId());
107: issue.addFile(fileAttachment, getUser1());
108: issue.save();
109: // need to save the attachments AFTER the issue has been created
110: issue.doSaveFileAttachments(getUser1());
111: System.out.println("filename=" + fileAttachment.getFileName());
112: }
113:
114: public void testGetRepositoryDirectory() throws Exception {
115:
116: Configuration c = new BaseConfiguration();
117: c.addProperty("scarab.attachments.repository",
118: "WEB-INF/attachements");
119: Attachment.setConfiguration(c);
120: String control = new String("WEB-INF" + File.separator
121: + "attachments");
122: File testPath = new File(Attachment.getRepositoryDirectory());
123: assertTrue("testpath was:" + testPath.getPath(), testPath
124: .getPath().endsWith(control));
125: }
126:
127: public void testGetRelativePath() throws Exception {
128: saveFile();
129: File control = new File("mod" + issue.getModuleId().toString()
130: + "/" + issue.getIdCount() / 1000 + "/"
131: + issue.getUniqueId() + "_"
132: + fileAttachment.getQueryKey() + "_"
133: + fileAttachment.getFileName());
134: File testPath = new File(fileAttachment.getRelativePath());
135: assertEquals(control.getPath(), testPath.getPath());
136: }
137:
138: public void testGetFullPath() throws Exception {
139: saveFile();
140: File control = new File(fileAttachment.getFullPath());
141: File testPath = new File(Attachment.getRepositoryDirectory(),
142: fileAttachment.getRelativePath());
143: assertEquals(control.getPath(), testPath.getPath());
144: }
145:
146: public void testSaveUrl() throws Exception {
147: // save comment
148: Attachment url = AttachmentManager.getInstance();
149: url.setIssue(issue);
150: url.setTypeId(AttachmentTypePeer.URL_PK);
151: url.setMimeType("");
152: url.setName("foo");
153: url.setData("www.foo.com");
154: url.save();
155: assertEquals(url.getName(), "foo");
156: assertEquals(url.getData(), "http://www.foo.com");
157:
158: url.setData("mailto:admin@foo.com");
159: url.save();
160: assertEquals(url.getData(), "mailto:admin@foo.com");
161: }
162: }
|