mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix MultipartResponse to allow for binary data to be sent
Summary: Changelog: [Internal] Reviewed By: motiz88 Differential Revision: D21995098 fbshipit-source-id: b387bd45b44fe93743d34d2a3435c165d15f054f
This commit is contained in:
committed by
Facebook GitHub Bot
parent
f53267f703
commit
1e61fa0931
@@ -15,84 +15,102 @@
|
||||
|
||||
@implementation RCTMultipartStreamReaderTests
|
||||
|
||||
- (void)testSimpleCase {
|
||||
- (void)testSimpleCase
|
||||
{
|
||||
NSString *response =
|
||||
@"preable, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"Content-Type: application/json; charset=utf-8\r\n"
|
||||
@"Content-Length: 2\r\n\r\n"
|
||||
@"{}\r\n"
|
||||
@"--sample_boundary--\r\n"
|
||||
@"epilogue, should be ignored";
|
||||
@"preamble, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"Content-Type: application/json; charset=utf-8\r\n"
|
||||
@"Content-Length: 2\r\n\r\n"
|
||||
@"{}\r\n"
|
||||
@"--sample_boundary--\r\n"
|
||||
@"epilogue, should be ignored";
|
||||
|
||||
NSInputStream *inputStream = [NSInputStream inputStreamWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream boundary:@"sample_boundary"];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream
|
||||
boundary:@"sample_boundary"];
|
||||
__block NSInteger count = 0;
|
||||
BOOL success = [reader readAllPartsWithCompletionCallback:^(NSDictionary *headers, NSData *content, BOOL done) {
|
||||
XCTAssertTrue(done);
|
||||
XCTAssertEqualObjects(headers[@"Content-Type"], @"application/json; charset=utf-8");
|
||||
XCTAssertEqualObjects([[NSString alloc] initWithData:content encoding:NSUTF8StringEncoding], @"{}");
|
||||
count++;
|
||||
} progressCallback: nil];
|
||||
BOOL success = [reader
|
||||
readAllPartsWithCompletionCallback:^(NSDictionary *headers, NSData *content, BOOL done) {
|
||||
XCTAssertTrue(done);
|
||||
XCTAssertEqualObjects(headers[@"Content-Type"], @"application/json; charset=utf-8");
|
||||
XCTAssertEqualObjects([[NSString alloc] initWithData:content encoding:NSUTF8StringEncoding], @"{}");
|
||||
count++;
|
||||
}
|
||||
progressCallback:nil];
|
||||
XCTAssertTrue(success);
|
||||
XCTAssertEqual(count, 1);
|
||||
}
|
||||
|
||||
- (void)testMultipleParts {
|
||||
- (void)testMultipleParts
|
||||
{
|
||||
NSString *response =
|
||||
@"preable, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"1\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"2\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"3\r\n"
|
||||
@"--sample_boundary--\r\n"
|
||||
@"epilogue, should be ignored";
|
||||
@"preamble, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"1\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"2\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"3\r\n"
|
||||
@"--sample_boundary--\r\n"
|
||||
@"epilogue, should be ignored";
|
||||
|
||||
NSInputStream *inputStream = [NSInputStream inputStreamWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream boundary:@"sample_boundary"];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream
|
||||
boundary:@"sample_boundary"];
|
||||
__block NSInteger count = 0;
|
||||
BOOL success = [reader readAllPartsWithCompletionCallback:^(__unused NSDictionary *headers, NSData *content, BOOL done) {
|
||||
count++;
|
||||
XCTAssertEqual(done, count == 3);
|
||||
NSString *expectedBody = [NSString stringWithFormat:@"%ld", (long)count];
|
||||
NSString *actualBody = [[NSString alloc] initWithData:content encoding:NSUTF8StringEncoding];
|
||||
XCTAssertEqualObjects(actualBody, expectedBody);
|
||||
} progressCallback:nil];
|
||||
BOOL success = [reader
|
||||
readAllPartsWithCompletionCallback:^(__unused NSDictionary *headers, NSData *content, BOOL done) {
|
||||
count++;
|
||||
XCTAssertEqual(done, count == 3);
|
||||
NSString *expectedBody = [NSString stringWithFormat:@"%ld", (long)count];
|
||||
NSString *actualBody = [[NSString alloc] initWithData:content encoding:NSUTF8StringEncoding];
|
||||
XCTAssertEqualObjects(actualBody, expectedBody);
|
||||
}
|
||||
progressCallback:nil];
|
||||
XCTAssertTrue(success);
|
||||
XCTAssertEqual(count, 3);
|
||||
}
|
||||
|
||||
- (void)testNoDelimiter {
|
||||
- (void)testNoDelimiter
|
||||
{
|
||||
NSString *response = @"Yolo";
|
||||
|
||||
NSInputStream *inputStream = [NSInputStream inputStreamWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream boundary:@"sample_boundary"];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream
|
||||
boundary:@"sample_boundary"];
|
||||
__block NSInteger count = 0;
|
||||
BOOL success = [reader readAllPartsWithCompletionCallback:^(__unused NSDictionary *headers, __unused NSData *content, __unused BOOL done) {
|
||||
count++;
|
||||
} progressCallback:nil];
|
||||
BOOL success = [reader
|
||||
readAllPartsWithCompletionCallback:^(
|
||||
__unused NSDictionary *headers, __unused NSData *content, __unused BOOL done) {
|
||||
count++;
|
||||
}
|
||||
progressCallback:nil];
|
||||
XCTAssertFalse(success);
|
||||
XCTAssertEqual(count, 0);
|
||||
}
|
||||
|
||||
- (void)testNoCloseDelimiter {
|
||||
- (void)testNoCloseDelimiter
|
||||
{
|
||||
NSString *response =
|
||||
@"preable, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"Content-Type: application/json; charset=utf-8\r\n"
|
||||
@"Content-Length: 2\r\n\r\n"
|
||||
@"{}\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"incomplete message...";
|
||||
@"preamble, should be ignored\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"Content-Type: application/json; charset=utf-8\r\n"
|
||||
@"Content-Length: 2\r\n\r\n"
|
||||
@"{}\r\n"
|
||||
@"--sample_boundary\r\n"
|
||||
@"incomplete message...";
|
||||
|
||||
NSInputStream *inputStream = [NSInputStream inputStreamWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream boundary:@"sample_boundary"];
|
||||
RCTMultipartStreamReader *reader = [[RCTMultipartStreamReader alloc] initWithInputStream:inputStream
|
||||
boundary:@"sample_boundary"];
|
||||
__block NSInteger count = 0;
|
||||
BOOL success = [reader readAllPartsWithCompletionCallback:^(__unused NSDictionary *headers, __unused NSData *content, __unused BOOL done) {
|
||||
count++;
|
||||
} progressCallback:nil];
|
||||
BOOL success = [reader
|
||||
readAllPartsWithCompletionCallback:^(
|
||||
__unused NSDictionary *headers, __unused NSData *content, __unused BOOL done) {
|
||||
count++;
|
||||
}
|
||||
progressCallback:nil];
|
||||
XCTAssertFalse(success);
|
||||
XCTAssertEqual(count, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user