11using System ;
22using System . IO ;
3+ using System . Net ;
4+ using System . Net . Http ;
5+ using System . Threading ;
36using System . Threading . Tasks ;
47using CloudConvert . API ;
58using CloudConvert . API . Models ;
69using CloudConvert . API . Models . Enums ;
710using CloudConvert . API . Models . ImportOperations ;
811using CloudConvert . API . Models . TaskModels ;
912using CloudConvert . API . Models . TaskOperations ;
13+ using CloudConvert . Test . Extensions ;
1014using Moq ;
15+ using Moq . Protected ;
1116using Newtonsoft . Json ;
1217using NUnit . Framework ;
1318
1419namespace CloudConvert . Test
1520{
1621 public class TestTasks
1722 {
18- readonly Mock < ICloudConvertAPI > _cloudConvertAPI = new Mock < ICloudConvertAPI > ( ) ;
19-
2023 [ Test ]
2124 public async Task GetAllTasks ( )
2225 {
@@ -26,10 +29,12 @@ public async Task GetAllTasks()
2629
2730 var path = @"Responses/tasks.json" ;
2831 string json = File . ReadAllText ( path ) ;
29- _cloudConvertAPI . Setup ( cc => cc . GetAllTasksAsync ( filter ) )
32+
33+ var cloudConvertApi = new Mock < ICloudConvertAPI > ( ) ;
34+ cloudConvertApi . Setup ( cc => cc . GetAllTasksAsync ( filter ) )
3035 . ReturnsAsync ( JsonConvert . DeserializeObject < ListResponse < TaskResponse > > ( json ) ) ;
3136
32- var tasks = await _cloudConvertAPI . Object . GetAllTasksAsync ( filter ) ;
37+ var tasks = await cloudConvertApi . Object . GetAllTasksAsync ( filter ) ;
3338
3439 Assert . IsNotNull ( tasks ) ;
3540 Assert . IsTrue ( tasks . Data . Count >= 0 ) ;
@@ -64,10 +69,12 @@ public async Task CreateTask()
6469
6570 var path = AppDomain . CurrentDomain . BaseDirectory + @"Responses/task_created.json" ;
6671 string json = File . ReadAllText ( path ) ;
67- _cloudConvertAPI . Setup ( cc => cc . CreateTaskAsync ( ConvertCreateRequest . Operation , req ) )
72+
73+ var cloudConvertApi = new Mock < ICloudConvertAPI > ( ) ;
74+ cloudConvertApi . Setup ( cc => cc . CreateTaskAsync ( ConvertCreateRequest . Operation , req ) )
6875 . ReturnsAsync ( JsonConvert . DeserializeObject < Response < TaskResponse > > ( json ) ) ;
6976
70- var task = await _cloudConvertAPI . Object . CreateTaskAsync ( ConvertCreateRequest . Operation , req ) ;
77+ var task = await cloudConvertApi . Object . CreateTaskAsync ( ConvertCreateRequest . Operation , req ) ;
7178
7279 Assert . IsNotNull ( task ) ;
7380 Assert . IsTrue ( task . Data . Status == API . Models . Enums . TaskStatus . waiting ) ;
@@ -80,6 +87,8 @@ public async Task GetTask()
8087
8188 var path = AppDomain . CurrentDomain . BaseDirectory + @"Responses/task.json" ;
8289 string json = File . ReadAllText ( path ) ;
90+
91+ var _cloudConvertAPI = new Mock < ICloudConvertAPI > ( ) ;
8392 _cloudConvertAPI . Setup ( cc => cc . GetTaskAsync ( id , null ) )
8493 . ReturnsAsync ( JsonConvert . DeserializeObject < Response < TaskResponse > > ( json ) ) ;
8594
@@ -96,10 +105,12 @@ public async Task WaitTask()
96105
97106 var path = AppDomain . CurrentDomain . BaseDirectory + @"Responses/task.json" ;
98107 string json = File . ReadAllText ( path ) ;
99- _cloudConvertAPI . Setup ( cc => cc . WaitTaskAsync ( id ) )
108+
109+ var cloudConvertApi = new Mock < ICloudConvertAPI > ( ) ;
110+ cloudConvertApi . Setup ( cc => cc . WaitTaskAsync ( id ) )
100111 . ReturnsAsync ( JsonConvert . DeserializeObject < Response < TaskResponse > > ( json ) ) ;
101112
102- var task = await _cloudConvertAPI . Object . WaitTaskAsync ( id ) ;
113+ var task = await cloudConvertApi . Object . WaitTaskAsync ( id ) ;
103114
104115 Assert . IsNotNull ( task ) ;
105116 Assert . IsTrue ( task . Data . Operation == "convert" ) ;
@@ -111,32 +122,60 @@ public async Task DeleteTask()
111122 {
112123 string id = "9de1a620-952c-4482-9d44-681ae28d72a1" ;
113124
114- _cloudConvertAPI . Setup ( cc => cc . DeleteTaskAsync ( id ) ) ;
125+ var cloudConvertApi = new Mock < ICloudConvertAPI > ( ) ;
126+ cloudConvertApi . Setup ( cc => cc . DeleteTaskAsync ( id ) ) ;
115127
116- await _cloudConvertAPI . Object . DeleteTaskAsync ( "c8a8da46-3758-45bf-b983-2510e3170acb" ) ;
128+ await cloudConvertApi . Object . DeleteTaskAsync ( "c8a8da46-3758-45bf-b983-2510e3170acb" ) ;
117129 }
118130
119131 [ Test ]
120132 public async Task Upload ( )
121133 {
134+ var cloudConvertApi = new Mock < ICloudConvertAPI > ( ) ;
122135 var req = new ImportUploadCreateRequest ( ) ;
123136
124137 var path = AppDomain . CurrentDomain . BaseDirectory + @"Responses/upload_task_created.json" ;
125138 string json = File . ReadAllText ( path ) ;
126- _cloudConvertAPI . Setup ( cc => cc . CreateTaskAsync ( ImportUploadCreateRequest . Operation , req ) )
139+ cloudConvertApi . Setup ( cc => cc . CreateTaskAsync ( ImportUploadCreateRequest . Operation , req ) )
127140 . ReturnsAsync ( JsonConvert . DeserializeObject < Response < TaskResponse > > ( json ) ) ;
128141
129- var task = await _cloudConvertAPI . Object . CreateTaskAsync ( ImportUploadCreateRequest . Operation , req ) ;
142+ var task = await cloudConvertApi . Object . CreateTaskAsync ( ImportUploadCreateRequest . Operation , req ) ;
130143
131144 Assert . IsNotNull ( task ) ;
132145
133146 var pathFile = AppDomain . CurrentDomain . BaseDirectory + @"TestFiles/input.pdf" ;
134147 byte [ ] file = File . ReadAllBytes ( pathFile ) ;
135148 string fileName = "input.pdf" ;
136149
137- _cloudConvertAPI . Setup ( cc => cc . UploadAsync ( task . Data . Result . Form . Url . ToString ( ) , file , fileName , task . Data . Result . Form . Parameters ) ) ;
150+ cloudConvertApi . Setup ( cc => cc . UploadAsync ( task . Data . Result . Form . Url . ToString ( ) , file , fileName , task . Data . Result . Form . Parameters ) ) ;
151+
152+ await cloudConvertApi . Object . UploadAsync ( task . Data . Result . Form . Url . ToString ( ) , file , fileName , task . Data . Result . Form . Parameters ) ;
153+ }
154+
155+ [ Test ]
156+ public async Task UploadStream ( )
157+ {
158+ var httpMessageHandlerMock = new Mock < HttpMessageHandler > ( ) ;
159+ httpMessageHandlerMock . MockResponse ( "/import/upload" , "upload_task_created.json" ) ;
160+ httpMessageHandlerMock . MockResponse ( "/tasks" , "tasks.json" ) ;
161+
162+ var httpClient = new HttpClient ( httpMessageHandlerMock . Object ) ;
163+ var restHelper = new RestHelper ( httpClient ) ;
164+ var req = new ImportUploadCreateRequest ( ) ;
165+ var cloudConvertApi = new CloudConvertAPI ( restHelper , "API_KEY" ) ;
166+
167+ var task = await cloudConvertApi . CreateTaskAsync ( ImportUploadCreateRequest . Operation , req ) ;
168+
169+ Assert . IsNotNull ( task ) ;
170+ httpMessageHandlerMock . VerifyRequest ( "/import/upload" , Times . Once ( ) ) ;
171+
172+ var streamMock = new Mock < Stream > ( ) ;
173+ var fileName = "input.pdf" ;
174+
175+ await cloudConvertApi . UploadAsync ( task . Data . Result . Form . Url . ToString ( ) , streamMock . Object , fileName , task . Data . Result . Form . Parameters ) ;
138176
139- await _cloudConvertAPI . Object . UploadAsync ( task . Data . Result . Form . Url . ToString ( ) , file , fileName , task . Data . Result . Form . Parameters ) ;
177+ httpMessageHandlerMock . VerifyRequest ( "/tasks" , Times . Once ( ) ) ;
178+ streamMock . Protected ( ) . Verify ( "Dispose" , Times . Never ( ) , args : true ) ;
140179 }
141180 }
142181}
0 commit comments