001    /**
002     * Copyright 2005-2011 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.krad.bo;
017    
018    
019    import org.junit.Test;
020    import org.kuali.rice.kim.api.identity.Person;
021    import org.kuali.rice.krad.UserSession;
022    import org.kuali.rice.krad.service.KRADServiceLocator;
023    import org.kuali.rice.krad.util.GlobalVariables;
024    import org.kuali.test.KRADTestCase;
025    
026    import java.io.DataInputStream;
027    import java.io.File;
028    import java.io.FileInputStream;
029    import java.io.FileWriter;
030    import java.io.InputStream;
031    
032    import static org.junit.Assert.*;
033    
034    
035    /**
036     * This is a description of what this class does - chang don't forget to fill this in. 
037     * 
038     * @author Kuali Rice Team (rice.collab@kuali.org)
039     *
040     */
041    public class AttachmentTest extends KRADTestCase {
042            
043            Attachment dummyAttachment;
044            
045            @Override
046            public void setUp() throws Exception {
047                    super.setUp();
048                    dummyAttachment = new Attachment();
049                    
050            }
051    
052            @Override
053            public void tearDown() throws Exception {
054                    super.tearDown();
055                    dummyAttachment = null;
056            }
057    
058            @Test
059            public void testNoteIdentifier(){
060                    dummyAttachment.setNoteIdentifier((long)12345);
061                    assertTrue("Testing NoteIdentifier of Attachment in AttachmentTest",12345 == dummyAttachment.getNoteIdentifier());
062            }
063            
064            @Test
065            public void testAttachmentMimeTypeCode(){
066                    dummyAttachment.setAttachmentMimeTypeCode("MIME_TYP");
067                    assertEquals("Testing AttachmentmimeTypeCode of Attachment in AttachmentTest","MIME_TYP", dummyAttachment.getAttachmentMimeTypeCode());
068            }
069            
070            @Test
071            public void testAttachmentFileName(){
072                    dummyAttachment.setAttachmentFileName("FILE_NM");
073                    assertEquals("Testing AttchmentFileName of Attachment in AttachmentTest","FILE_NM", dummyAttachment.getAttachmentFileName());
074            }
075            
076            @Test
077            public void testAttachmentIdentifier(){
078                    dummyAttachment.setAttachmentIdentifier("Att_ID");
079                    assertEquals("Testing Attachment in AttachmentTest","Att_ID", dummyAttachment.getAttachmentIdentifier());
080            }
081            
082            @Test
083            public void testAttachmentFileSize(){
084                    dummyAttachment.setAttachmentFileSize((long)12345);
085                    assertTrue("Testing AttachmentFileSize of Attachment in AttachmentTest",12345 == dummyAttachment.getAttachmentFileSize());
086            }
087            
088    
089            @Test
090            public void testAttachmentTypeCode(){
091                    dummyAttachment.setAttachmentTypeCode("ATT_TYP_CD");
092                    assertEquals("Testing AttachmentmimeTypeCode of Attachment in AttachmentTest","ATT_TYP_CD", dummyAttachment.getAttachmentTypeCode());
093            }
094            
095    
096            @Test
097            public void testNote(){
098                    Note dummyNote = new Note();
099                    dummyNote.setNoteText("Hello");
100                    dummyAttachment.setNote(dummyNote);
101                    assertEquals("Testing Note of Attachment in AttachmentTest","Hello", dummyAttachment.getNote().getNoteText());
102            }
103            
104            @Test
105            public void testComplete(){
106            
107                    dummyAttachment.setAttachmentIdentifier("Att_ID");
108                    dummyAttachment.setAttachmentFileName("FILE_NM");
109                    dummyAttachment.setAttachmentFileSize(new Long(12345));
110                    dummyAttachment.setAttachmentMimeTypeCode("MIME_TYP");
111                    assertTrue("Testing Complete of Attachment in AttachmentTest",dummyAttachment.isComplete());
112                    {
113                            dummyAttachment.setAttachmentFileName(null);
114                            assertFalse("Testing Complete of Attachment in AttachmentTest",dummyAttachment.isComplete());
115            
116                    }
117                    {
118                            dummyAttachment.setAttachmentFileSize((long)0);
119                            assertFalse("Testing Complete of Attachment in AttachmentTest",dummyAttachment.isComplete());
120                    }
121                    {
122                            dummyAttachment.setAttachmentIdentifier(null);
123                            assertFalse("Testing Complete of Attachment in AttachmentTest",dummyAttachment.isComplete());
124                    }
125                    {
126                            dummyAttachment.setAttachmentMimeTypeCode(null);
127                            assertFalse("Testing Complete of Attachment in AttachmentTest",dummyAttachment.isComplete());
128                    }
129                    
130            }
131            
132            
133            @Test
134            public void testAttachmentContents() throws Exception {
135                    
136                    
137                    try{
138                             
139                            FileWriter out = new FileWriter("dummy.txt");
140                            out.write("Hello testAttachmentContent");
141                            out.close();
142                                                    
143                            File dummyFile = new File("dummy.txt");  
144                            Note dummyNote = new Note();
145                            InputStream inStream = new FileInputStream("dummy.txt");
146                    
147                            GlobalVariables.setUserSession(new UserSession("quickstart"));
148                            
149                    Person kualiUser = GlobalVariables.getUserSession().getPerson();
150                            PersistableBusinessObject parentNote = KRADServiceLocator.getNoteService().createNote(dummyNote, dummyAttachment, kualiUser.getPrincipalId());
151                            dummyAttachment = KRADServiceLocator.getAttachmentService().createAttachment( parentNote,
152                                                                                                                                                                                     "dummy.txt", 
153                                                                                                                                                                                 "MimeTypeCode",
154                                                                                                                                                                                 (int) (long) dummyFile.length(), 
155                                                                                                                                                                                 inStream,
156                                                                                                                                                                                 "AttachmentTypeCode");
157                            String result ="";
158                            DataInputStream in =  new DataInputStream(dummyAttachment.getAttachmentContents());
159                    
160                            while (in.available() != 0) {
161                                       result += in.readLine();
162                            }
163                            inStream.close();
164                            assertEquals("Testing attachmentContents in AttachmentTest","Hello testAttachmentContent",result );
165                    }
166                    finally{
167                            new File("dummy.txt").delete();
168                    }
169            }
170    }