forked from jverkoey/nimbus
-
Notifications
You must be signed in to change notification settings - Fork 1
/
_a_s_i_form_data_request_tests_8m_source.html
387 lines (369 loc) · 31.7 KB
/
_a_s_i_form_data_request_tests_8m_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Nimbus: /Users/featherless/workbench/ios/nimbus/src/ASIHTTPRequest/unittests/Tests/ASIFormDataRequestTests.m Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-24278774-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div id="page">
<div style="position:relative">
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<a style="float: right;margin-right:20px;margin-top:20px" href='http://www.pledgie.com/campaigns/15519'><img alt='Click here to support Nimbus development and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/15519.png?skin_name=chrome' border='0' /></a>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Nimbus
 <span id="projectnumber">0.6.1 - <a href="http://github.com/jverkoey/nimbus">Nimbus is proudly hosted on Github</a></span>
</div>
<div id="projectbrief">An iOS framework whose growth is bounded by O(documentation).</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.4-20110629 -->
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('_a_s_i_form_data_request_tests_8m.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">/Users/featherless/workbench/ios/nimbus/src/ASIHTTPRequest/unittests/Tests/ASIFormDataRequestTests.m</div> </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// ASIFormDataRequestTests.m</span>
<a name="l00003"></a>00003 <span class="comment">// Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest</span>
<a name="l00004"></a>00004 <span class="comment">//</span>
<a name="l00005"></a>00005 <span class="comment">// Created by Ben Copsey on 08/11/2008.</span>
<a name="l00006"></a>00006 <span class="comment">// Copyright 2008 All-Seeing Interactive. All rights reserved.</span>
<a name="l00007"></a>00007 <span class="comment">//</span>
<a name="l00008"></a>00008
<a name="l00009"></a>00009 <span class="preprocessor">#import "ASIFormDataRequestTests.h"</span>
<a name="l00010"></a>00010 <span class="preprocessor">#import "ASIFormDataRequest.h"</span>
<a name="l00011"></a>00011
<a name="l00012"></a>00012 <span class="comment">// Used for subclass test</span>
<a name="l00013"></a>00013 <span class="keyword">@interface </span>ASIFormDataRequestSubclass : ASIFormDataRequest {}
<a name="l00014"></a>00014 <span class="keyword">@end</span>
<a name="l00015"></a>00015 <span class="keyword">@implementation </span>ASIFormDataRequestSubclass;
<a name="l00016"></a>00016 <span class="keyword">@end</span>
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="keyword">@implementation </span>ASIFormDataRequestTests
<a name="l00019"></a>00019
<a name="l00020"></a>00020 - (void)testAddNilKeysAndValues
<a name="l00021"></a>00021 {
<a name="l00022"></a>00022 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/empty-post-value"]];
<a name="l00023"></a>00023 [request setPostValue:nil forKey:@"key1"];
<a name="l00024"></a>00024 [request setPostValue:@"value2" forKey:@"key2"];
<a name="l00025"></a>00025 [request setData:nil forKey:@"file1"];
<a name="l00026"></a>00026 [request setData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"file2"];
<a name="l00027"></a>00027 [request startSynchronous];
<a name="l00028"></a>00028 BOOL success = ([[request responseString] isEqualToString:@"key1: \r\nkey2: value2\r\nfile1: \r\nfile2: hello"]);
<a name="l00029"></a>00029 GHAssertTrue(success, <span class="stringliteral">@"Sent wrong data"</span>);
<a name="l00030"></a>00030
<a name="l00031"></a>00031 <span class="comment">// Test nil key (no key or value should be sent to the server)</span>
<a name="l00032"></a>00032 request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]];
<a name="l00033"></a>00033 [request addPostValue:@"value1" forKey:nil];
<a name="l00034"></a>00034 [request addPostValue:@"value2" forKey:@"key2"];
<a name="l00035"></a>00035 [request buildPostBody];
<a name="l00036"></a>00036 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *postBody = [[[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> alloc] initWithData:[request postBody] encoding:NSUTF8StringEncoding] autorelease];
<a name="l00037"></a>00037 success = ([postBody isEqualToString:@"key2=value2"]);
<a name="l00038"></a>00038 GHAssertTrue(success, <span class="stringliteral">@"Sent wrong data"</span>);
<a name="l00039"></a>00039 }
<a name="l00040"></a>00040
<a name="l00041"></a>00041 - (void)testPostWithFileUpload
<a name="l00042"></a>00042 {
<a name="l00043"></a>00043 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/post"];
<a name="l00044"></a>00044
<a name="l00045"></a>00045 <span class="comment">//Create a 32kb file</span>
<a name="l00046"></a>00046 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size = 1024*32;
<a name="l00047"></a>00047 NSMutableData *data = [NSMutableData dataWithLength:size];
<a name="l00048"></a>00048 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *path = [[<span class="keyword">self</span> filePathForTemporaryTestFiles] stringByAppendingPathComponent:@"bigfile"];
<a name="l00049"></a>00049 [data writeToFile:path atomically:NO];
<a name="l00050"></a>00050
<a name="l00051"></a>00051 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
<a name="l00052"></a>00052
<a name="l00053"></a>00053 NSDate *d = [NSDate date];
<a name="l00054"></a>00054 <span class="preprocessor">#if TARGET_OS_IPHONE</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span> NSValue *v = [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];
<a name="l00056"></a>00056 <span class="preprocessor">#else</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span> NSValue *v = [NSValue valueWithRect:NSMakeRect(0, 0, 200, 200)];
<a name="l00058"></a>00058 <span class="preprocessor">#endif</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span> [request setPostValue:@"foo" forKey:@"post_var"];
<a name="l00060"></a>00060 [request setPostValue:d forKey:@"post_var2"];
<a name="l00061"></a>00061 [request setPostValue:v forKey:@"post_var3"];
<a name="l00062"></a>00062 [request setFile:path forKey:@"file"];
<a name="l00063"></a>00063 [request startSynchronous];
<a name="l00064"></a>00064
<a name="l00065"></a>00065 BOOL success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"bigfile",size,@"application/octet-stream"]]);
<a name="l00066"></a>00066 GHAssertTrue(success,<span class="stringliteral">@"Failed to upload the correct data (using local file)"</span>);
<a name="l00067"></a>00067
<a name="l00068"></a>00068 <span class="comment">//Try the same with the raw data</span>
<a name="l00069"></a>00069 request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
<a name="l00070"></a>00070 [request setPostValue:@"foo" forKey:@"post_var"];
<a name="l00071"></a>00071 [request setPostValue:d forKey:@"post_var2"];
<a name="l00072"></a>00072 [request setPostValue:v forKey:@"post_var3"];
<a name="l00073"></a>00073 [request setData:data forKey:@"file"];
<a name="l00074"></a>00074 [request startSynchronous];
<a name="l00075"></a>00075
<a name="l00076"></a>00076 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"file",size,@"application/octet-stream"]]);
<a name="l00077"></a>00077 GHAssertTrue(success,<span class="stringliteral">@"Failed to upload the correct data (using NSData)"</span>);
<a name="l00078"></a>00078
<a name="l00079"></a>00079 <span class="comment">//Post with custom content-type and file name</span>
<a name="l00080"></a>00080 request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
<a name="l00081"></a>00081 [request setPostValue:@"foo" forKey:@"post_var"];
<a name="l00082"></a>00082 [request setPostValue:d forKey:@"post_var2"];
<a name="l00083"></a>00083 [request setPostValue:v forKey:@"post_var3"];
<a name="l00084"></a>00084 [request setFile:path withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"];
<a name="l00085"></a>00085 [request startSynchronous];
<a name="l00086"></a>00086
<a name="l00087"></a>00087 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]);
<a name="l00088"></a>00088 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct content-type / file name"</span>);
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="comment">//Post raw data with custom content-type and file name</span>
<a name="l00091"></a>00091 request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
<a name="l00092"></a>00092 [request setPostValue:@"foo" forKey:@"post_var"];
<a name="l00093"></a>00093 [request setPostValue:d forKey:@"post_var2"];
<a name="l00094"></a>00094 [request setPostValue:v forKey:@"post_var3"];
<a name="l00095"></a>00095 [request setData:data withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"];
<a name="l00096"></a>00096 [request startSynchronous];
<a name="l00097"></a>00097
<a name="l00098"></a>00098 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]);
<a name="l00099"></a>00099 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct content-type / file name"</span>);
<a name="l00100"></a>00100
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102
<a name="l00103"></a>00103 <span class="comment">// Test fix for bug where setting an empty string for a form post value would cause the rest of the post body to be ignored (because an NSOutputStream won't like it if you try to write 0 bytes)</span>
<a name="l00104"></a>00104 - (void)testEmptyData
<a name="l00105"></a>00105 {
<a name="l00106"></a>00106 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/post-empty"]];
<a name="l00107"></a>00107 [request setPostValue:@"hello" forKey:@"a_non_empty_string"];
<a name="l00108"></a>00108 [request setPostValue:@"" forKey:@"zzz_empty_string"];
<a name="l00109"></a>00109 [request setPostValue:@"there" forKey:@"xxx_non_empty_string"];
<a name="l00110"></a>00110 [request setShouldStreamPostDataFromDisk:YES];
<a name="l00111"></a>00111 [request buildPostBody];
<a name="l00112"></a>00112 [request startSynchronous];
<a name="l00113"></a>00113
<a name="l00114"></a>00114 BOOL success = ([[request responseString] isEqualToString:@"a_non_empty_string: hello\r\nzzz_empty_string: \r\nxxx_non_empty_string: there"]);
<a name="l00115"></a>00115 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct post data"</span>);
<a name="l00116"></a>00116
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118
<a name="l00119"></a>00119 <span class="comment">// Ensure class convenience constructor returns an instance of our subclass</span>
<a name="l00120"></a>00120 - (void)testSubclass
<a name="l00121"></a>00121 {
<a name="l00122"></a>00122 ASIFormDataRequestSubclass *instance = [ASIFormDataRequestSubclass requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]];
<a name="l00123"></a>00123 BOOL success = [instance isKindOfClass:[ASIFormDataRequestSubclass class]];
<a name="l00124"></a>00124 GHAssertTrue(success,<span class="stringliteral">@"Convenience constructor failed to return an instance of the correct class"</span>);
<a name="l00125"></a>00125 }
<a name="l00126"></a>00126
<a name="l00127"></a>00127 - (void)testURLEncodedPost
<a name="l00128"></a>00128 {
<a name="l00129"></a>00129 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/url-encoded-post"]];
<a name="l00130"></a>00130 [request setPostValue:@"value1" forKey:@"value1"];
<a name="l00131"></a>00131 [request setPostValue:@"(%20 ? =)" forKey:@"value2"];
<a name="l00132"></a>00132 [request setPostValue:@"£100.00" forKey:@"value3"];
<a name="l00133"></a>00133 [request setPostValue:@"" forKey:@"value4"];
<a name="l00134"></a>00134 [request setPostValue:@"&??aaa=//ciaoèèè" forKey:@"teskey&aa"];
<a name="l00135"></a>00135
<a name="l00136"></a>00136 [request setShouldStreamPostDataFromDisk:YES];
<a name="l00137"></a>00137 [request setPostFormat:ASIURLEncodedPostFormat];
<a name="l00138"></a>00138 [request startSynchronous];
<a name="l00139"></a>00139
<a name="l00140"></a>00140
<a name="l00141"></a>00141 BOOL success = ([[request responseString] isEqualToString:@"value1: value1\r\nvalue2: (%20 ? =)\r\nvalue3: £100.00\r\nvalue4: \r\nteskey&aa: &??aaa=//ciaoèèè"]);
<a name="l00142"></a>00142 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct post data"</span>);
<a name="l00143"></a>00143 }
<a name="l00144"></a>00144
<a name="l00145"></a>00145 - (void)testCharset
<a name="l00146"></a>00146 {
<a name="l00147"></a>00147 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/formdata-charset"];
<a name="l00148"></a>00148 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *testString = <span class="stringliteral">@"£££s don't seem to buy me many €€€s these days"</span>;
<a name="l00149"></a>00149
<a name="l00150"></a>00150 <span class="comment">// Test the default (UTF-8) with a url-encoded request</span>
<a name="l00151"></a>00151 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *charset = <span class="stringliteral">@"utf-8"</span>;
<a name="l00152"></a>00152 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
<a name="l00153"></a>00153 [request setPostValue:testString forKey:@"value"];
<a name="l00154"></a>00154 [request startSynchronous];
<a name="l00155"></a>00155 BOOL success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00156"></a>00156 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00157"></a>00157
<a name="l00158"></a>00158 <span class="comment">// Test the default (UTF-8) with a multipart/form-data request</span>
<a name="l00159"></a>00159 request = [ASIFormDataRequest requestWithURL:url];
<a name="l00160"></a>00160 [request setPostValue:testString forKey:@"value"];
<a name="l00161"></a>00161 [request setPostFormat:ASIMultipartFormDataPostFormat];
<a name="l00162"></a>00162 [request startSynchronous];
<a name="l00163"></a>00163 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00164"></a>00164 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00165"></a>00165
<a name="l00166"></a>00166 <span class="comment">// Test a different charset</span>
<a name="l00167"></a>00167 testString = <span class="stringliteral">@"£££s don't seem to buy me many $$$s these days"</span>;
<a name="l00168"></a>00168 charset = <span class="stringliteral">@"iso-8859-1"</span>;
<a name="l00169"></a>00169 request = [ASIFormDataRequest requestWithURL:url];
<a name="l00170"></a>00170 [request setPostValue:testString forKey:@"value"];
<a name="l00171"></a>00171 [request setStringEncoding:NSISOLatin1StringEncoding];
<a name="l00172"></a>00172 [request startSynchronous];
<a name="l00173"></a>00173 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00174"></a>00174 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00175"></a>00175
<a name="l00176"></a>00176 <span class="comment">// And again with multipart/form-data request</span>
<a name="l00177"></a>00177 request = [ASIFormDataRequest requestWithURL:url];
<a name="l00178"></a>00178 [request setPostValue:testString forKey:@"value"];
<a name="l00179"></a>00179 [request setPostFormat:ASIMultipartFormDataPostFormat];
<a name="l00180"></a>00180 [request setStringEncoding:NSISOLatin1StringEncoding];
<a name="l00181"></a>00181 [request startSynchronous];
<a name="l00182"></a>00182 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00183"></a>00183 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00184"></a>00184
<a name="l00185"></a>00185 <span class="comment">// Once more for luck</span>
<a name="l00186"></a>00186 charset = <span class="stringliteral">@"windows-1252"</span>;
<a name="l00187"></a>00187 request = [ASIFormDataRequest requestWithURL:url];
<a name="l00188"></a>00188 [request setPostValue:testString forKey:@"value"];
<a name="l00189"></a>00189 [request setStringEncoding:NSWindowsCP1252StringEncoding];
<a name="l00190"></a>00190 [request startSynchronous];
<a name="l00191"></a>00191 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00192"></a>00192 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00193"></a>00193
<a name="l00194"></a>00194 request = [ASIFormDataRequest requestWithURL:url];
<a name="l00195"></a>00195 [request setPostValue:testString forKey:@"value"];
<a name="l00196"></a>00196 [request setPostFormat:ASIMultipartFormDataPostFormat];
<a name="l00197"></a>00197 [request setStringEncoding:NSWindowsCP1252StringEncoding];
<a name="l00198"></a>00198 [request startSynchronous];
<a name="l00199"></a>00199 success = ([[request responseString] isEqualToString:[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> stringWithFormat:@"Got data in %@: %@",charset,testString]]);
<a name="l00200"></a>00200 GHAssertTrue(success,<span class="stringliteral">@"Failed to correctly encode the data"</span>);
<a name="l00201"></a>00201
<a name="l00202"></a>00202 <span class="comment">// Ensure charset isn't added to file post (GH issue 36)</span>
<a name="l00203"></a>00203 request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/Tests/return-raw-request"]];
<a name="l00204"></a>00204 [request setData:[@"test 123" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"file"];
<a name="l00205"></a>00205 [request setRequestMethod:@"PUT"];
<a name="l00206"></a>00206 [request startSynchronous];
<a name="l00207"></a>00207 success = ([[request responseString] rangeOfString:@"charset=utf-8"].location == NSNotFound);
<a name="l00208"></a>00208 GHAssertTrue(success,<span class="stringliteral">@"Sent a charset header for an uploaded file"</span>);
<a name="l00209"></a>00209
<a name="l00210"></a>00210
<a name="l00211"></a>00211 }
<a name="l00212"></a>00212
<a name="l00213"></a>00213 - (void)testPUT
<a name="l00214"></a>00214 {
<a name="l00215"></a>00215 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/Tests/put_form_data"]];
<a name="l00216"></a>00216 [request setRequestMethod:@"PUT"];
<a name="l00217"></a>00217 [request setPostValue:@"cheep cheep" forKey:@"hello"];
<a name="l00218"></a>00218 [request startSynchronous];
<a name="l00219"></a>00219
<a name="l00220"></a>00220 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *expectedResponse = [[[<a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> alloc] initWithBytes:[[request postBody] bytes] length:[[request postBody] length] encoding:[request stringEncoding]] autorelease];
<a name="l00221"></a>00221 BOOL success = ([[request responseString] isEqualToString:expectedResponse]);
<a name="l00222"></a>00222 GHAssertTrue(success,<span class="stringliteral">@"Failed to send form data using PUT"</span>);
<a name="l00223"></a>00223
<a name="l00224"></a>00224 <span class="comment">// Ensure that other methods still default to POST</span>
<a name="l00225"></a>00225 request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/Tests/put_form_data"]];
<a name="l00226"></a>00226 [request setRequestMethod:@"DELETE"];
<a name="l00227"></a>00227 [request setPostValue:@"cheep cheep" forKey:@"hello"];
<a name="l00228"></a>00228 [request startSynchronous];
<a name="l00229"></a>00229
<a name="l00230"></a>00230 success = ([[request responseString] isEqualToString:@"Got POST instead"]);
<a name="l00231"></a>00231 GHAssertTrue(success,<span class="stringliteral">@"Failed to send form data using PUT"</span>);
<a name="l00232"></a>00232 }
<a name="l00233"></a>00233
<a name="l00234"></a>00234 - (void)testCopy
<a name="l00235"></a>00235 {
<a name="l00236"></a>00236 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
<a name="l00237"></a>00237
<a name="l00238"></a>00238 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com"]];
<a name="l00239"></a>00239 ASIFormDataRequest *request2 = [request copy];
<a name="l00240"></a>00240 GHAssertNotNil(request2,<span class="stringliteral">@"Failed to create a copy"</span>);
<a name="l00241"></a>00241
<a name="l00242"></a>00242 [pool release];
<a name="l00243"></a>00243 BOOL success = ([request2 retainCount] == 1);
<a name="l00244"></a>00244 GHAssertTrue(success,<span class="stringliteral">@"Failed to create a retained copy"</span>);
<a name="l00245"></a>00245 success = ([request2 isKindOfClass:[ASIFormDataRequest class]]);
<a name="l00246"></a>00246 GHAssertTrue(success,<span class="stringliteral">@"Copy is of wrong class"</span>);
<a name="l00247"></a>00247
<a name="l00248"></a>00248 [request2 release];
<a name="l00249"></a>00249 }
<a name="l00250"></a>00250
<a name="l00251"></a>00251 - (void)testMultipleValuesForASingleKey
<a name="l00252"></a>00252 {
<a name="l00253"></a>00253 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/multiple-values"]];
<a name="l00254"></a>00254 [request addPostValue:@"here" forKey:@"test_value[]"];
<a name="l00255"></a>00255 [request addPostValue:@"are" forKey:@"test_value[]"];
<a name="l00256"></a>00256 [request addPostValue:@"some" forKey:@"test_value[]"];
<a name="l00257"></a>00257 [request addPostValue:@"values" forKey:@"test_value[]"];
<a name="l00258"></a>00258
<a name="l00259"></a>00259 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *path1 = [[<span class="keyword">self</span> filePathForTemporaryTestFiles] stringByAppendingPathComponent:@"file1.txt"];
<a name="l00260"></a>00260 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *path2 = [[<span class="keyword">self</span> filePathForTemporaryTestFiles] stringByAppendingPathComponent:@"file2.txt"];
<a name="l00261"></a>00261 [@"hello" writeToFile:path1 atomically:NO encoding:NSUTF8StringEncoding error:nil];
<a name="l00262"></a>00262 [@"there" writeToFile:path2 atomically:NO encoding:NSUTF8StringEncoding error:nil];
<a name="l00263"></a>00263 [request addFile:path1 forKey:@"test_file[]"];
<a name="l00264"></a>00264 [request addFile:path2 forKey:@"test_file[]"];
<a name="l00265"></a>00265
<a name="l00266"></a>00266 [request startSynchronous];
<a name="l00267"></a>00267 <a class="code" href="class_n_s_string.html" title="For manipulating NSStrings.">NSString</a> *expectedOutput = <span class="stringliteral">@"here\r\nare\r\nsome\r\nvalues\r\nfile1.txt\r\nfile2.txt\r\n"</span>;
<a name="l00268"></a>00268 BOOL success = [[request responseString] isEqualToString:expectedOutput];
<a name="l00269"></a>00269 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct data"</span>);
<a name="l00270"></a>00270
<a name="l00271"></a>00271 <span class="comment">// Check data replaces older data</span>
<a name="l00272"></a>00272 request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/single-values"]];
<a name="l00273"></a>00273 [request addPostValue:@"here" forKey:@"test_value[]"];
<a name="l00274"></a>00274 [request addPostValue:@"are" forKey:@"test_value[]"];
<a name="l00275"></a>00275 [request addPostValue:@"some" forKey:@"test_value[]"];
<a name="l00276"></a>00276 [request addPostValue:@"values" forKey:@"test_value[]"];
<a name="l00277"></a>00277
<a name="l00278"></a>00278 [request setPostValue:@"this is new data" forKey:@"test_value[]"];
<a name="l00279"></a>00279
<a name="l00280"></a>00280 [request addFile:path1 forKey:@"test_file[]"];
<a name="l00281"></a>00281 [request addFile:path2 forKey:@"test_file[]"];
<a name="l00282"></a>00282
<a name="l00283"></a>00283 [request setData:[@"this is new data" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"test_file[]"];
<a name="l00284"></a>00284
<a name="l00285"></a>00285 [request startSynchronous];
<a name="l00286"></a>00286 expectedOutput = <span class="stringliteral">@"this is new data\r\nfile\r\n"</span>;
<a name="l00287"></a>00287 success = [[request responseString] isEqualToString:expectedOutput];
<a name="l00288"></a>00288 GHAssertTrue(success,<span class="stringliteral">@"Failed to send the correct data"</span>);
<a name="l00289"></a>00289 }
<a name="l00290"></a>00290
<a name="l00291"></a>00291 <span class="keyword">@end</span>
</pre></div></div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>ASIFormDataRequestTests.m</b> </li>
</div><!-- .fixedwidth -->
<span class="footer">Generated for Nimbus by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4-20110629 </span>
</ul>
</div>
</div> <!-- page -->
</body>
</html>