11package com .microsoft .graph .functional ;
22
33import static org .junit .Assert .assertFalse ;
4+ import static org .junit .Assert .assertTrue ;
45
6+ import java .io .ByteArrayInputStream ;
57import java .io .IOException ;
68import java .io .InputStream ;
9+ import java .nio .charset .StandardCharsets ;
710
811import org .junit .Assert ;
912import org .junit .Before ;
1013import org .junit .Ignore ;
1114import org .junit .Test ;
1215
16+ import com .google .gson .JsonPrimitive ;
1317import com .microsoft .graph .concurrency .ChunkedUploadProvider ;
1418import com .microsoft .graph .concurrency .IProgressCallback ;
1519import com .microsoft .graph .core .ClientException ;
20+ import com .microsoft .graph .http .CoreHttpProvider ;
1621import com .microsoft .graph .models .extensions .DriveItem ;
1722import com .microsoft .graph .models .extensions .DriveItemUploadableProperties ;
1823import com .microsoft .graph .models .extensions .UploadSession ;
@@ -25,7 +30,25 @@ public class OneDriveTests {
2530 public void setUp () {
2631 testBase = new TestBase ();
2732 }
28-
33+
34+ IProgressCallback <DriveItem > callback = new IProgressCallback <DriveItem > () {
35+ @ Override
36+ public void progress (final long current , final long max ) {
37+ //Check progress
38+ }
39+ @ Override
40+ public void success (final DriveItem result ) {
41+ //Handle the successful response
42+ String finishedItemId = result .id ;
43+ Assert .assertNotNull (finishedItemId );
44+ }
45+
46+ @ Override
47+ public void failure (final ClientException ex ) {
48+ //Handle the failed upload
49+ Assert .fail ("Upload session failed" );
50+ }
51+ };
2952 /**
3053 * Test large file upload.
3154 * https://github.com/OneDrive/onedrive-sdk-csharp/blob/master/docs/chunked-uploads.md
@@ -41,25 +64,6 @@ public void testLargeFileUpload() throws IOException, InterruptedException {
4164 InputStream uploadFile = OneDriveTests .class .getClassLoader ().getResourceAsStream ("hamilton.jpg" );
4265 long fileSize = (long ) uploadFile .available ();
4366
44- IProgressCallback <DriveItem > callback = new IProgressCallback <DriveItem > () {
45- @ Override
46- public void progress (final long current , final long max ) {
47- //Check progress
48- }
49- @ Override
50- public void success (final DriveItem result ) {
51- //Handle the successful response
52- String finishedItemId = result .id ;
53- Assert .assertNotNull (finishedItemId );
54- }
55-
56- @ Override
57- public void failure (final ClientException ex ) {
58- //Handle the failed upload
59- Assert .fail ("Upload session failed" );
60- }
61- };
62-
6367 UploadSession uploadSession = testBase
6468 .graphClient
6569 .me ()
@@ -85,4 +89,43 @@ public void testDownloadWithCustomRequest() throws IOException {
8589 assertFalse ("stream should not be empty" , stream .read () == -1 );
8690 }
8791 }
92+ @ Test
93+ public void downloadJsonFileFromOneDrive () throws Exception {
94+ final DriveItemUploadableProperties item = new DriveItemUploadableProperties ();
95+ item .name = "test.json" ;
96+ item .additionalDataManager ().put ("@microsoft.graph.conflictBehavior" , new JsonPrimitive ("replace" ));
97+
98+ final InputStream uploadFile = new ByteArrayInputStream ("{\" hehe\" :\" haha\" }" .getBytes (StandardCharsets .UTF_8 ));
99+
100+ final long fileSize = (long ) uploadFile .available ();
101+
102+ final UploadSession session = testBase .graphClient .me ()
103+ .drive ()
104+ .root ()
105+ .itemWithPath (item .name )
106+ .createUploadSession (item )
107+ .buildRequest ()
108+ .post ();
109+
110+ ChunkedUploadProvider <DriveItem > chunkedUploadProvider = new ChunkedUploadProvider <DriveItem >(
111+ session ,
112+ testBase .graphClient ,
113+ uploadFile ,
114+ fileSize ,
115+ DriveItem .class );
116+
117+ chunkedUploadProvider .upload (callback );
118+
119+ final InputStream stream = testBase .graphClient .me ()
120+ .drive ()
121+ .root ()
122+ .itemWithPath (item .name )
123+ .content ()
124+ .buildRequest ()
125+ .get ();
126+
127+ final String fileContent = CoreHttpProvider .streamToString (stream );
128+
129+ assertTrue (fileContent .length () > 0 );
130+ }
88131}
0 commit comments