33import static org .junit .Assert .assertFalse ;
44import static org .junit .Assert .assertNotNull ;
55
6+ import java .io .ByteArrayOutputStream ;
7+ import java .io .File ;
8+ import java .io .FileInputStream ;
9+ import java .io .InputStream ;
610import java .util .ArrayList ;
11+ import java .util .Arrays ;
712
813import javax .xml .datatype .DatatypeFactory ;
914import javax .xml .datatype .Duration ;
1217import org .junit .Ignore ;
1318import org .junit .Test ;
1419
20+ import com .microsoft .graph .models .extensions .Attendee ;
1521//import com.microsoft.graph.extensions.IDirectoryDeletedItemsCollectionPage;
1622import com .microsoft .graph .models .extensions .AttendeeBase ;
23+ import com .microsoft .graph .models .extensions .Contact ;
24+ import com .microsoft .graph .models .extensions .DateTimeTimeZone ;
1725import com .microsoft .graph .models .extensions .EmailAddress ;
26+ import com .microsoft .graph .models .extensions .Event ;
27+ import com .microsoft .graph .models .extensions .FileAttachment ;
28+ import com .microsoft .graph .models .extensions .ItemAttachment ;
29+ import com .microsoft .graph .models .extensions .ItemBody ;
1830import com .microsoft .graph .models .extensions .MeetingTimeSuggestionsResult ;
1931import com .microsoft .graph .models .extensions .Message ;
2032import com .microsoft .graph .models .extensions .Recipient ;
2133import com .microsoft .graph .models .extensions .User ;
34+ import com .microsoft .graph .models .generated .BodyType ;
2235import com .microsoft .graph .options .QueryOption ;
36+ import com .microsoft .graph .requests .extensions .AttachmentCollectionPage ;
2337import com .microsoft .graph .requests .extensions .IMessageCollectionPage ;
2438import com .microsoft .graph .requests .extensions .IUserCollectionPage ;
39+ import com .microsoft .graph .requests .generated .BaseAttachmentCollectionResponse ;
2540
2641@ Ignore
2742public class OutlookTests {
@@ -105,4 +120,134 @@ public void testSendDraft() {
105120 IMessageCollectionPage mcp = testBase .graphClient .me ().messages ().buildRequest (options ).get ();
106121 assertFalse (mcp .getCurrentPage ().isEmpty ());
107122 }
123+
124+ @ Test
125+ public void sendEmailWithAttachment () throws Exception {
126+ TestBase testBase = new TestBase ();
127+ Message message = getMessage ();
128+ message .hasAttachments = true ;
129+ BaseAttachmentCollectionResponse response = new BaseAttachmentCollectionResponse ();
130+ response .value = Arrays .asList (getFileAttachment (),getItemAttachmentWithEvent (),getItemAttachmentWithContact ());
131+ message .attachments = new AttachmentCollectionPage (response , null );
132+ testBase .graphClient .me ().sendMail (message , true ).buildRequest ().post ();
133+ }
134+
135+ @ Test
136+ public void uploadEmailAsDraftWithAttachmentThenSend () {
137+ TestBase testBase = new TestBase ();
138+ Message message = getMessage ();
139+ Message m = testBase .graphClient .me ().messages ().buildRequest ().post (message );
140+ assertNotNull (m );
141+ testBase .graphClient .me ().messages (m .id ).send ().buildRequest ().post ();
142+ }
143+
144+ @ Test
145+ public void sendEventWithAttachment () throws Exception {
146+ TestBase testBase = new TestBase ();
147+ Event event = getEvent ();
148+ event .body = getItemBody ();
149+ event .hasAttachments = true ;
150+ BaseAttachmentCollectionResponse response = new BaseAttachmentCollectionResponse ();
151+ response .value = Arrays .asList (getFileAttachment (),getItemAttachmentWithContact ());
152+ event .attachments = new AttachmentCollectionPage (response , null );
153+ Event eventResponse = testBase .graphClient .me ().events ().buildRequest ().post (event );
154+ assertNotNull (eventResponse );
155+ }
156+
157+ private ItemBody getItemBody () {
158+ ItemBody itemBody = new ItemBody ();
159+ itemBody .content = "<html><head></head><body> test body </body></html>" ;
160+ itemBody .contentType = BodyType .HTML ;
161+ return itemBody ;
162+ }
163+
164+ public Message getMessage () {
165+ Message message = new Message ();
166+ java .util .List <String > emails = Arrays .asList ("test_email@test_domain.com" );
167+ java .util .List <Recipient > listReceipient = new ArrayList <>();
168+ for (String email : emails ) {
169+ EmailAddress emailAddress = new EmailAddress ();
170+ emailAddress .address = email ;
171+ Recipient recipient = new Recipient ();
172+ recipient .emailAddress = emailAddress ;
173+ listReceipient .add (recipient );
174+ }
175+ message .body = getItemBody ();
176+ message .toRecipients = listReceipient ;
177+ message .subject = "Test Message" ;
178+ message .id = "1234" ;
179+ return message ;
180+ }
181+
182+ private FileAttachment getFileAttachment () throws Exception {
183+ FileAttachment fileAttachment = new FileAttachment ();
184+ fileAttachment .name = "document.pdf" ;
185+ File pdfFile = new File ("src/test/resources/document.pdf" );
186+ InputStream fileStream = new FileInputStream (pdfFile );
187+ fileAttachment .contentBytes = getByteArray (fileStream );
188+ fileAttachment .oDataType = "#microsoft.graph.fileAttachment" ;
189+ fileAttachment .id ="54321" ;
190+ return fileAttachment ;
191+ }
192+
193+ private ItemAttachment getItemAttachmentWithEvent () {
194+ ItemAttachment itemAttachmentEvent = new ItemAttachment ();
195+ itemAttachmentEvent .oDataType = "#microsoft.graph.itemAttachment" ;
196+ itemAttachmentEvent .name = "event name" ;
197+ itemAttachmentEvent .item = getEvent ();
198+ itemAttachmentEvent .item .oDataType = "microsoft.graph.event" ;
199+ return itemAttachmentEvent ;
200+ }
201+
202+ private ItemAttachment getItemAttachmentWithContact () {
203+ Contact contact = new Contact ();
204+ contact .displayName = "displayname" ;
205+ contact .mobilePhone ="123456890" ;
206+ ItemAttachment itemAttachmentContact = new ItemAttachment ();
207+ itemAttachmentContact .oDataType = "#microsoft.graph.itemAttachment" ;
208+ itemAttachmentContact .name = "Attachment name" ;
209+ itemAttachmentContact .item = contact ;
210+ itemAttachmentContact .item .oDataType = "microsoft.graph.contact" ;
211+ return itemAttachmentContact ;
212+ }
213+
214+ private Event getEvent () {
215+ Event event = new Event ();
216+ java .util .List <String > emails = Arrays .asList ("test_email@test_domain.com" );
217+ java .util .List <Attendee > attendees = new ArrayList <>();
218+ for (String email : emails ) {
219+ EmailAddress emailAddress = new EmailAddress ();
220+ emailAddress .address = email ;
221+ Attendee attendee = new Attendee ();
222+ attendee .emailAddress = emailAddress ;
223+ attendees .add (attendee );
224+ }
225+ DateTimeTimeZone start = new DateTimeTimeZone ();
226+ start .timeZone = "UTC" ;
227+ start .dateTime = "2018-10-16T06:15:26.544Z" ;
228+ DateTimeTimeZone end = new DateTimeTimeZone ();
229+ end .timeZone = "UTC" ;
230+ end .dateTime = "2018-11-18T07:30:26.544Z" ;
231+ event .start = start ;
232+ event .end = end ;
233+ event .subject = "Test Event Subject" ;
234+ event .id = "1234" ;
235+ return event ;
236+ }
237+
238+ public byte [] getByteArray (InputStream in ) {
239+ try {
240+ ByteArrayOutputStream buffer = new ByteArrayOutputStream ();
241+ int nRead ;
242+ byte [] data = new byte [16384 ];
243+ while ((nRead = in .read (data , 0 , data .length )) != -1 ) {
244+ buffer .write (data , 0 , nRead );
245+ }
246+ buffer .flush ();
247+ return buffer .toByteArray ();
248+ } catch (Exception e ) {
249+ e .printStackTrace ();
250+ }
251+ return null ;
252+ }
108253}
0 commit comments