@@ -116,4 +116,44 @@ - (void) testTransportNegotiateCausesClosed
116
116
}];
117
117
}
118
118
119
+ - (void )testConnectionCanRestartAfterNegotiateError {
120
+ id failingTransport = [OCMockObject niceMockForProtocol: @protocol (SRClientTransportInterface)];
121
+ [SRMockClientTransport negotiateForMockTransport: failingTransport statusCode: @400 error: [NSError errorWithDomain: @" UNIT TEST" code: NSURLErrorTimedOut userInfo: nil ]];
122
+
123
+ id successTransport = [OCMockObject niceMockForProtocol: @protocol (SRClientTransportInterface)];
124
+ [[successTransport expect ] negotiate: [OCMArg any ] connectionData: [OCMArg any ] completionHandler: [OCMArg any ]];
125
+
126
+ SRConnection* connection = [[SRConnection alloc ] initWithURLString: @" http://localhost:0000" ];
127
+ [connection start: failingTransport];
128
+ XCTAssertEqual (connection.state , disconnected);
129
+ [connection start: successTransport];
130
+ XCTAssertEqual (connection.state , connecting);
131
+ [successTransport verify ];
132
+
133
+ }
134
+
135
+ - (void )testConnectionCanRestartAfterStartError {
136
+ id failingTransport = [OCMockObject niceMockForProtocol: @protocol (SRClientTransportInterface)];
137
+ [SRMockClientTransport startForMockTransport: failingTransport statusCode: @400 error: [[NSError alloc ]initWithDomain:@" Expected" code: 42 userInfo: nil ]];
138
+ id json = @{
139
+ @" ConnectionId" : @" 10101" ,
140
+ @" ConnectionToken" : @" 10101010101" ,
141
+ @" DisconnectTimeout" : @30 ,
142
+ @" ProtocolVersion" : @" 1.3.0.0"
143
+ };
144
+ [SRMockClientTransport negotiateForMockTransport: failingTransport statusCode: @200 json: json];
145
+
146
+ id successTransport = [OCMockObject niceMockForProtocol: @protocol (SRClientTransportInterface)];
147
+ [SRMockClientTransport negotiateForMockTransport: successTransport statusCode: @200 json: json];
148
+ [[successTransport expect ] start: [OCMArg any ] connectionData: [OCMArg any ] completionHandler: [OCMArg any ]];
149
+
150
+ SRConnection* connection = [[SRConnection alloc ] initWithURLString: @" http://localhost:0000" ];
151
+ [connection start: failingTransport];
152
+ XCTAssertEqual (connection.state , disconnected);
153
+ [connection start: successTransport];
154
+ XCTAssertEqual (connection.state , connecting);
155
+ [successTransport verify ];
156
+
157
+ }
158
+
119
159
@end
0 commit comments