From 2c14cdd1db13b025bae7de2d844302789e654a93 Mon Sep 17 00:00:00 2001 From: hideya kawahara Date: Sat, 24 Oct 2015 00:37:23 +0900 Subject: [PATCH] Necessary changes to support PersistedModel.updateAll --- LoopBack/LBPersistedModel.m | 3 +- LoopBack/LBUser.m | 3 +- LoopBackTests/LBPersistedModelTests.m | 7 ++- SLRemoting/SLAdapter.h | 49 +++--------------- SLRemoting/SLAdapter.m | 17 +------ SLRemoting/SLObject.h | 44 +++++++++++++++++ SLRemoting/SLObject.m | 49 ++++++++++++++++-- SLRemoting/SLRESTAdapter.m | 55 ++++++++------------- SLRemotingTests/SLRESTAdapterNonRootTests.m | 8 +++ SLRemotingTests/SLRESTAdapterSSLTests.m | 8 +++ SLRemotingTests/SLRESTAdapterTests.m | 10 ++++ SLRemotingTests/SLRESTContractTests.m | 10 ++++ 12 files changed, 163 insertions(+), 100 deletions(-) diff --git a/LoopBack/LBPersistedModel.m b/LoopBack/LBPersistedModel.m index 59207d7..6b96d70 100644 --- a/LoopBack/LBPersistedModel.m +++ b/LoopBack/LBPersistedModel.m @@ -39,7 +39,8 @@ - (NSDictionary *)toDictionary { - (void)saveWithSuccess:(LBPersistedModelSaveSuccessBlock)success failure:(SLFailureBlock)failure { [self invokeMethod:self._id ? @"save" : @"create" - parameters:[self toDictionary] + parameters:nil + bodyParameters:[self toDictionary] success:^(id value) { [self setId:[value valueForKey:@"id"]]; success(); diff --git a/LoopBack/LBUser.m b/LoopBack/LBUser.m index 1ec08fd..eceb1a1 100644 --- a/LoopBack/LBUser.m +++ b/LoopBack/LBUser.m @@ -71,7 +71,8 @@ - (void)loginWithEmail:(NSString*)email NSParameterAssert(email); NSParameterAssert(password); [self invokeStaticMethod:@"login" - parameters:@{ @"email": email, @"password": password } + parameters:nil + bodyParameters:@{ @"email": email, @"password": password } success:^(id value) { NSAssert([[value class] isSubclassOfClass:[NSDictionary class]], @"Received non-Dictionary: %@", value); LBRESTAdapter* adapter = (LBRESTAdapter*)self.adapter; diff --git a/LoopBackTests/LBPersistedModelTests.m b/LoopBackTests/LBPersistedModelTests.m index 5c6acde..a07e3bb 100644 --- a/LoopBackTests/LBPersistedModelTests.m +++ b/LoopBackTests/LBPersistedModelTests.m @@ -108,8 +108,11 @@ - (void)testFindWithFilter { - (void)testFindOne { ASYNC_TEST_START - [[self.repository adapter] invokeStaticMethod:@"widgets.findOne" parameters: - @{ @"filter": @{@"where": @{ @"name" : @"Foo" }}} success:^(LBPersistedModel *model) { + [[self.repository adapter] invokeStaticMethod:@"widgets.findOne" + parameters:@{ @"filter": @{@"where": @{ @"name" : @"Foo" }}} + bodyParameters:nil + outputStream:nil + success:^(LBPersistedModel *model) { XCTAssertNotNil(model, @"No models returned."); XCTAssertEqualObjects(model[@"name"], @"Foo", @"Invalid name"); XCTAssertEqualObjects(model[@"bars"], @0, @"Invalid bars"); diff --git a/SLRemoting/SLAdapter.h b/SLRemoting/SLAdapter.h index e4b2bfd..8828e07 100644 --- a/SLRemoting/SLAdapter.h +++ b/SLRemoting/SLAdapter.h @@ -104,24 +104,6 @@ extern NSString *SLAdapterNotConnectedErrorDescription; */ - (void)connectToURL:(NSURL *)url; -/** - * Invokes a remotable method exposed statically on the server. - * - * Unlike SLAdapter::invokeInstanceMethod:constructorParameters:parameters:success:failure:, - * no object needs to be created on the server. - * - * @param method The method to invoke, e.g. `module.doSomething`. - * @param parameters The parameters to invoke with. - * @param success An SLSuccessBlock to be executed when the invocation - * succeeds. - * @param failure An SLFailureBlock to be executed when the invocation - * fails. - */ -- (void)invokeStaticMethod:(NSString *)method - parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure; - /** * Invokes a remotable method exposed statically on the server. * @@ -130,6 +112,8 @@ extern NSString *SLAdapterNotConnectedErrorDescription; * * @param method The method to invoke, e.g. `module.doSomething`. * @param parameters The parameters to invoke with. + * @param bodyParameters The parameters that get JSON encoded and put into + * the message body when the method is POST or PUT. * @param outputStream The stream to which all the response data goes. * If this is set, no data is routed for further * processing and the success block is invoked with `nil`. @@ -140,6 +124,7 @@ extern NSString *SLAdapterNotConnectedErrorDescription; */ - (void)invokeStaticMethod:(NSString *)method parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure; @@ -158,31 +143,8 @@ extern NSString *SLAdapterNotConnectedErrorDescription; * @param constructorParameters The parameters the virual object should be * created with. * @param parameters The parameters to invoke with. - * @param success An SLSuccessBlock to be executed when the - * invocation succeeds. - * @param failure An SLFailureBlock to be executed when the - * invocation fails. - */ -- (void)invokeInstanceMethod:(NSString *)method - constructorParameters:(NSDictionary *)constructorParameters - parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure; - -/** - * Invokes a remotable method exposed within a prototype on the server. - * - * This should be thought of as a two-step process. First, the server loads or - * creates an object with the appropriate type. Then and only then is the method - * invoked on that object. The two parameter dictionaries correspond to these - * two steps: `creationParameters` for the former, and `parameters` for the - * latter. - * - * @param method The method to invoke, e.g. - * `MyClass.prototype.doSomething`. - * @param constructorParameters The parameters the virual object should be - * created with. - * @param parameters The parameters to invoke with. + * @param bodyParameters The parameters that get JSON encoded and put into + * the message body when the method is POST or PUT. * @param outputStream The stream to which all the response data goes. * If this is set, no data is routed for further * processing and the success block is invoked @@ -195,6 +157,7 @@ extern NSString *SLAdapterNotConnectedErrorDescription; - (void)invokeInstanceMethod:(NSString *)method constructorParameters:(NSDictionary *)constructorParameters parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure; diff --git a/SLRemoting/SLAdapter.m b/SLRemoting/SLAdapter.m index 5579bb9..eca0d9b 100644 --- a/SLRemoting/SLAdapter.m +++ b/SLRemoting/SLAdapter.m @@ -60,30 +60,17 @@ - (void)connectToURL:(NSURL *)url { - (void)invokeStaticMethod:(NSString *)path parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure { - NSAssert(NO, @"Invalid Adapter."); -} - -- (void)invokeStaticMethod:(NSString *)path - parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure { NSAssert(NO, @"Invalid Adapter."); } -- (void)invokeInstanceMethod:(NSString *)path - constructorParameters:(NSDictionary *)constructorParameters - parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure { - NSAssert(NO, @"Invalid Adapter."); -} - - (void)invokeInstanceMethod:(NSString *)method constructorParameters:(NSDictionary *)constructorParameters parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure { diff --git a/SLRemoting/SLObject.h b/SLRemoting/SLObject.h index fb7882d..6b3422c 100644 --- a/SLRemoting/SLObject.h +++ b/SLRemoting/SLObject.h @@ -72,6 +72,28 @@ extern NSString *SLObjectInvalidRepositoryDescription; success:(SLSuccessBlock)success failure:(SLFailureBlock)failure; +/** + * Invokes a remotable method exposed within instances of this class on the + * server. + * + * @see SLAdapter::invokeInstanceMethod:constructorParameters:parameters:success:failure: + * + * @param name The method to invoke (without the prototype), e.g. + * `doSomething`. + * @param parameters The parameters to invoke with. + * @param bodyParameters The parameters that get JSON encoded and put into + * the message body when the verb is POST or PUT. + * @param success An SLSuccessBlock to be executed when the invocation + * succeeds. + * @param failure An SLFailureBlock to be executed when the invocation + * fails. + */ +- (void)invokeMethod:(NSString *)name + parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters + success:(SLSuccessBlock)success + failure:(SLFailureBlock)failure; + /** * Invokes a remotable method exposed within instances of this class on the * server. @@ -153,6 +175,28 @@ extern NSString *SLObjectInvalidRepositoryDescription; success:(SLSuccessBlock)success failure:(SLFailureBlock)failure; +/** + * Invokes a remotable method exposed statically within this class on the + * server. + * + * @see SLAdapter::invokeStaticMethod:parameters:success:failure: + * + * @param name The method to invoke (without the class name), e.g. + * `doSomething`. + * @param parameters The parameters to invoke with. + * @param bodyParameters The parameters that get JSON encoded and put into + * the message body when the verb is POST or PUT. + * @param success An SLSuccessBlock to be executed when the invocation + * succeeds. + * @param failure An SLFailureBlock to be executed when the invocation + * fails. + */ +- (void)invokeStaticMethod:(NSString *)name + parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters + success:(SLSuccessBlock)success + failure:(SLFailureBlock)failure; + /** * Invokes a remotable method exposed statically within this class on the * server. diff --git a/SLRemoting/SLObject.m b/SLRemoting/SLObject.m index eb1ea18..29308e0 100644 --- a/SLRemoting/SLObject.m +++ b/SLRemoting/SLObject.m @@ -52,10 +52,32 @@ - (void)invokeMethod:(NSString *)name name]; [self.repository.adapter invokeInstanceMethod:path - constructorParameters:self.creationParameters - parameters:parameters - success:success - failure:failure]; + constructorParameters:self.creationParameters + parameters:parameters + bodyParameters:nil + outputStream:nil + success:success + failure:failure]; +} + +- (void)invokeMethod:(NSString *)name + parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters + success:(SLSuccessBlock)success + failure:(SLFailureBlock)failure { + NSAssert(self.repository, SLObjectInvalidRepositoryDescription); + + NSString *path = [NSString stringWithFormat:@"%@.prototype.%@", + self.repository.className, + name]; + + [self.repository.adapter invokeInstanceMethod:path + constructorParameters:self.creationParameters + parameters:parameters + bodyParameters:bodyParameters + outputStream:nil + success:success + failure:failure]; } - (void)invokeMethod:(NSString *)name @@ -73,6 +95,7 @@ - (void)invokeMethod:(NSString *)name [self.repository.adapter invokeInstanceMethod:path constructorParameters:self.creationParameters parameters:parameters + bodyParameters:nil outputStream:outputStream success:success failure:failure]; @@ -108,6 +131,23 @@ - (void)invokeStaticMethod:(NSString *)name NSString *path = [NSString stringWithFormat:@"%@.%@", self.className, name]; [self.adapter invokeStaticMethod:path parameters:parameters + bodyParameters:nil + outputStream:nil + success:success + failure:failure]; +} + +- (void)invokeStaticMethod:(NSString *)name + parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters + success:(SLSuccessBlock)success + failure:(SLFailureBlock)failure { + + NSString *path = [NSString stringWithFormat:@"%@.%@", self.className, name]; + [self.adapter invokeStaticMethod:path + parameters:parameters + bodyParameters:bodyParameters + outputStream:nil success:success failure:failure]; } @@ -121,6 +161,7 @@ - (void)invokeStaticMethod:(NSString *)name NSString *path = [NSString stringWithFormat:@"%@.%@", self.className, name]; [self.adapter invokeStaticMethod:path parameters:parameters + bodyParameters:nil outputStream:outputStream success:success failure:failure]; diff --git a/SLRemoting/SLRESTAdapter.m b/SLRemoting/SLRESTAdapter.m index acfce05..dd88e36 100644 --- a/SLRemoting/SLRESTAdapter.m +++ b/SLRemoting/SLRESTAdapter.m @@ -22,6 +22,7 @@ @interface SLRESTAdapter() { - (void)requestWithPath:(NSString *)path verb:(NSString *)verb parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters multipart:(BOOL)multipart outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success @@ -64,18 +65,7 @@ - (void)connectToURL:(NSURL *)url { - (void)invokeStaticMethod:(NSString *)method parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure { - - [self invokeStaticMethod:method - parameters:parameters - outputStream:nil - success:success - failure:failure]; -} - -- (void)invokeStaticMethod:(NSString *)method - parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure { @@ -90,6 +80,7 @@ - (void)invokeStaticMethod:(NSString *)method [self requestWithPath:path verb:verb parameters:mutableParams + bodyParameters:bodyParameters multipart:multipart outputStream:outputStream success:success @@ -99,20 +90,7 @@ - (void)invokeStaticMethod:(NSString *)method - (void)invokeInstanceMethod:(NSString *)method constructorParameters:(NSDictionary *)constructorParameters parameters:(NSDictionary *)parameters - success:(SLSuccessBlock)success - failure:(SLFailureBlock)failure { - - [self invokeInstanceMethod:method - constructorParameters:constructorParameters - parameters:parameters - outputStream:nil - success:success - failure:failure]; -} - -- (void)invokeInstanceMethod:(NSString *)method - constructorParameters:(NSDictionary *)constructorParameters - parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success failure:(SLFailureBlock)failure { @@ -130,6 +108,7 @@ - (void)invokeInstanceMethod:(NSString *)method [self requestWithPath:path verb:verb parameters:combinedParameters + bodyParameters:bodyParameters multipart:multipart outputStream:outputStream success:success @@ -139,6 +118,7 @@ - (void)invokeInstanceMethod:(NSString *)method - (void)requestWithPath:(NSString *)path verb:(NSString *)verb parameters:(NSDictionary *)parameters + bodyParameters:(NSDictionary *)bodyParameters multipart:(BOOL)multipart outputStream:(NSOutputStream *)outputStream success:(SLSuccessBlock)success @@ -146,21 +126,28 @@ - (void)requestWithPath:(NSString *)path NSAssert(self.connected, SLAdapterNotConnectedErrorDescription); - if ([[verb uppercaseString] isEqualToString:@"GET"]) { - client.parameterEncoding = AFFormURLParameterEncoding; - } else { - client.parameterEncoding = AFJSONParameterEncoding; - } - // Remove the leading / so that the path is treated as relative to the baseURL if ([path hasPrefix:@"/"]) { path = [path substringFromIndex:1]; } - NSURLRequest *request; + NSMutableURLRequest *request; if (!multipart) { - request = [client requestWithMethod:verb path:path parameters:parameters]; + if ([verb isEqualToString:@"GET"] || [verb isEqualToString:@"HEAD"] || [verb isEqualToString:@"DELETE"]) { + parameters = ([parameters count] > 0) ? parameters : nil; + request = [client requestWithMethod:verb path:path parameters:parameters]; + } else { + client.parameterEncoding = AFJSONParameterEncoding; + request = [client requestWithMethod:verb path:path parameters:bodyParameters]; + if (parameters) { + NSURL *url = [NSURL URLWithString:[[request.URL absoluteString] + stringByAppendingFormat:@"?%@", + SLAFQueryStringFromParametersWithEncoding(parameters, + client.stringEncoding)]]; + [request setURL:url]; + } + } } else { request = [client multipartFormRequestWithMethod:verb path:path diff --git a/SLRemotingTests/SLRESTAdapterNonRootTests.m b/SLRemotingTests/SLRESTAdapterNonRootTests.m index a70e130..05e0b77 100644 --- a/SLRemotingTests/SLRESTAdapterNonRootTests.m +++ b/SLRemotingTests/SLRESTAdapterNonRootTests.m @@ -33,6 +33,8 @@ - (void)testGetMsg { adapter = [SLRESTAdapter adapterWithURL:[NSURL URLWithString:@"http://localhost:3001/nonroot/api"]]; [adapter invokeStaticMethod:@"getMsg" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"Hello" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -48,6 +50,8 @@ - (void)testConvertMsg { adapter = [SLRESTAdapter adapterWithURL:[NSURL URLWithString:@"http://localhost:3001/nonroot/api"]]; [adapter invokeStaticMethod:@"convertMsg" parameters:@{ @"str": @"somevalue" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"CONVERTED: SOMEVALUE" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -63,6 +67,8 @@ - (void)testGetMsgWithTrailingSlash { adapter = [SLRESTAdapter adapterWithURL:[NSURL URLWithString:@"http://localhost:3001/nonroot/api/"]]; [adapter invokeStaticMethod:@"getMsg" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"Hello" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -78,6 +84,8 @@ - (void)testConvertMsgWithTrailingSlash { adapter = [SLRESTAdapter adapterWithURL:[NSURL URLWithString:@"http://localhost:3001/nonroot/api/"]]; [adapter invokeStaticMethod:@"convertMsg" parameters:@{ @"str": @"somevalue" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"CONVERTED: SOMEVALUE" isEqualToString:value[@"data"]], @"Incorrect value returned."); diff --git a/SLRemotingTests/SLRESTAdapterSSLTests.m b/SLRemotingTests/SLRESTAdapterSSLTests.m index b5acab3..1a02a8b 100644 --- a/SLRemotingTests/SLRESTAdapterSSLTests.m +++ b/SLRemotingTests/SLRESTAdapterSSLTests.m @@ -36,6 +36,8 @@ - (void)testGet { ASYNC_TEST_START [adapter invokeStaticMethod:@"simple.getSecret" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"shhh!" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -49,6 +51,8 @@ - (void)testTransform { ASYNC_TEST_START [adapter invokeStaticMethod:@"simple.transform" parameters:@{ @"str": @"somevalue" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"transformed: somevalue" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -63,6 +67,8 @@ - (void)testTestClassGet { [adapter invokeInstanceMethod:@"SimpleClass.prototype.getName" constructorParameters:@{ @"name": @"somename" } parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"somename" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -77,6 +83,8 @@ - (void)testTestClassTransform { [adapter invokeInstanceMethod:@"SimpleClass.prototype.greet" constructorParameters:@{ @"name": @"somename" } parameters:@{ @"other": @"othername" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"Hi, othername!" isEqualToString:value[@"data"]], @"Incorrect value returned."); diff --git a/SLRemotingTests/SLRESTAdapterTests.m b/SLRemotingTests/SLRESTAdapterTests.m index dfba788..1bf12d6 100644 --- a/SLRemotingTests/SLRESTAdapterTests.m +++ b/SLRemotingTests/SLRESTAdapterTests.m @@ -36,6 +36,8 @@ - (void)testGet { ASYNC_TEST_START [adapter invokeStaticMethod:@"simple.getSecret" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"shhh!" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -49,6 +51,8 @@ - (void)testTransform { ASYNC_TEST_START [adapter invokeStaticMethod:@"simple.transform" parameters:@{ @"str": @"somevalue" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"transformed: somevalue" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -63,6 +67,8 @@ - (void)testTestClassGet { [adapter invokeInstanceMethod:@"SimpleClass.prototype.getName" constructorParameters:@{ @"name": @"somename" } parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"somename" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -77,6 +83,8 @@ - (void)testTestClassTransform { [adapter invokeInstanceMethod:@"SimpleClass.prototype.greet" constructorParameters:@{ @"name": @"somename" } parameters:@{ @"other": @"othername" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"Hi, othername!" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -135,6 +143,7 @@ - (void)testBinaryPayloadStatic { ASYNC_TEST_START [adapter invokeStaticMethod:@"SimpleClass.binary" parameters:nil + bodyParameters:nil outputStream:outputStream success:^(id value) { NSData *data = @@ -155,6 +164,7 @@ - (void)testBinaryPayload { [adapter invokeInstanceMethod:@"SimpleClass.prototype.binary" constructorParameters:nil parameters:nil + bodyParameters:nil outputStream:outputStream success:^(id value) { NSData *data = diff --git a/SLRemotingTests/SLRESTContractTests.m b/SLRemotingTests/SLRESTContractTests.m index 3288b26..e26762f 100644 --- a/SLRemotingTests/SLRESTContractTests.m +++ b/SLRemotingTests/SLRESTContractTests.m @@ -69,6 +69,8 @@ - (void)testGet { ASYNC_TEST_START [adapter invokeStaticMethod:@"contract.getSecret" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"shhh!" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -82,6 +84,8 @@ - (void)testTransform { ASYNC_TEST_START [adapter invokeStaticMethod:@"contract.transform" parameters:@{ @"str": @"somevalue" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"transformed: somevalue" isEqualToString:value[@"data"]], @"Incorrect value returned."); @@ -96,6 +100,8 @@ - (void)testTestClassGet { [adapter invokeInstanceMethod:@"ContractClass.prototype.getName" constructorParameters:@{ @"name": @"somename" } parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"somename" isEqualToString:value[@"data"]], @"Incorrect value returned: %@", value); @@ -110,6 +116,8 @@ - (void)testTestClassTransform { [adapter invokeInstanceMethod:@"ContractClass.prototype.greet" constructorParameters:@{ @"name": @"somename" } parameters:@{ @"other": @"othername" } + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"Hi, othername!" isEqualToString:value[@"data"]], @"Incorrect value returned: %@", value); @@ -171,6 +179,8 @@ - (void)testCustomRequestHeader { [customAdapter invokeStaticMethod:@"contract.getAuthorizationHeader" parameters:nil + bodyParameters:nil + outputStream:nil success:^(id value) { XCTAssertNotNil(value, @"No value returned."); XCTAssertTrue([@"auth-token" isEqualToString:value[@"data"]], @"Incorrect value returned.");