summaryrefslogtreecommitdiff
path: root/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h')
-rw-r--r--platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h199
1 files changed, 199 insertions, 0 deletions
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h b/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
new file mode 100644
index 0000000000..f4c2a07a98
--- /dev/null
+++ b/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
@@ -0,0 +1,199 @@
+/***********************************************************************************
+ *
+ * Copyright (c) 2012 Olivier Halligon
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ ***********************************************************************************/
+
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Imports
+
+#import <Foundation/Foundation.h>
+
+#import "Compatibility.h"
+#import "OHHTTPStubsResponse.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Types
+
+typedef BOOL(^OHHTTPStubsTestBlock)(NSURLRequest* request);
+typedef OHHTTPStubsResponse* __nonnull (^OHHTTPStubsResponseBlock)( NSURLRequest* request);
+
+/**
+ * This opaque type represents an installed stub and is used to uniquely
+ * identify a stub once it has been created.
+ *
+ * This type is returned by the `stubRequestsPassingTest:withStubResponse:` method
+ * so that you can later reference it and use this reference to remove the stub later.
+ *
+ * This type also let you add arbitrary metadata to a stub to differenciate it
+ * more easily when debugging.
+ */
+@protocol OHHTTPStubsDescriptor <NSObject>
+/**
+ * An arbitrary name that you can set and get to describe your stub.
+ * Use it as your own convenience.
+ *
+ * This is especially useful if you dump all installed stubs using `allStubs`
+ * or if you want to log which stubs are being triggered using `onStubActivation:`.
+ */
+@property(nonatomic, strong, nullable) NSString* name;
+@end
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Interface
+
+/**
+ * Stubs Manager. Use this class to add and remove stubs and stub your network requests.
+ */
+@interface OHHTTPStubs : NSObject
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Adding & Removing stubs
+
+
+
+/**
+ * Dedicated method to add a stub
+ *
+ * @param testBlock Block that should return `YES` if the request passed as parameter
+ * should be stubbed with the response block, and `NO` if it should
+ * hit the real world (or be managed by another stub).
+ * @param responseBlock Block that will return the `OHHTTPStubsResponse` (response to
+ * use for stubbing) corresponding to the given request
+ *
+ * @return a stub descriptor that uniquely identifies the stub and can be later used to remove it with `removeStub:`.
+ *
+ * @note The returned stub descriptor is retained (`__strong` reference) by `OHHTTPStubs`
+ * until it is removed (with one of the `removeStub:` / `removeAllStubs`
+ * methods); it is thus recommended to keep it in a `__weak` storage (and not `__strong`)
+ * in your app code, to let the stub descriptor be destroyed and let the variable go
+ * back to `nil` automatically when the stub is removed.
+ */
++(id<OHHTTPStubsDescriptor>)stubRequestsPassingTest:(OHHTTPStubsTestBlock)testBlock
+ withStubResponse:(OHHTTPStubsResponseBlock)responseBlock;
+
+/**
+ * Remove a stub from the list of stubs
+ *
+ * @param stubDesc The stub descriptor that has been returned when adding the stub
+ * using `stubRequestsPassingTest:withStubResponse:`
+ *
+ * @return `YES` if the stub has been successfully removed, `NO` if the parameter was
+ * not a valid stub identifier
+ */
++(BOOL)removeStub:(id<OHHTTPStubsDescriptor>)stubDesc;
+
+/**
+ * Remove all the stubs from the stubs list.
+ */
++(void)removeAllStubs;
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Disabling & Re-Enabling stubs
+
+/**
+ * Enable or disable the stubs for the shared session or for `NSURLConnection`
+ *
+ * @param enabled If `YES`, enables the stubs. If `NO`, disable all the
+ * stubs and let all the requests hit the real world.
+ *
+ * @note OHHTTPStubs are enabled by default, so there is no need to call
+ * this method with `YES` for stubs to work, except if you explicitely
+ * disabled the stubs before.
+ *
+ * @note This only affects requests that are further made using `NSURLConnection`
+ * or using `[NSURLSession sharedSession]`. This does not affect requests
+ * sent on an `NSURLSession` created using an `NSURLSessionConfiguration`.
+ */
++(void)setEnabled:(BOOL)enabled;
+
+#if defined(__IPHONE_7_0) || defined(__MAC_10_9)
+/**
+ * Enable or disable the stubs on a given `NSURLSessionConfiguration`.
+ *
+ * @param enabled If `YES`, enables the stubs for this `NSURLSessionConfiguration`.
+ * If `NO`, disable the stubs and let all the requests hit the real world
+ * @param sessionConfig The NSURLSessionConfiguration on which to enabled/disable the stubs
+ *
+ * @note OHHTTPStubs are enabled by default on newly created `defaultSessionConfiguration`
+ * and `ephemeralSessionConfiguration`, so there is no need to call this method with
+ * `YES` for stubs to work. You generally only use this if you want to disable
+ * `OHTTPStubs` per `NSURLSession` by calling it before building the `NSURLSession`
+ * with the `NSURLSessionConfiguration`.
+ *
+ * @note Important: As usual according to the way `NSURLSessionConfiguration` works, you
+ * MUST set this property BEFORE creating the `NSURLSession`. Once the `NSURLSession`
+ * object is created, they use a deep copy of the `NSURLSessionConfiguration` object
+ * used to create them, so changing the configuration later does not affect already
+ * created sessions.
+ */
++ (void)setEnabled:(BOOL)enabled forSessionConfiguration:(NSURLSessionConfiguration *)sessionConfig;
+#endif
+
+#pragma mark - Debug Methods
+
+/**
+ * List all the installed stubs
+ *
+ * @return An array of `id<OHHTTPStubsDescriptor>` objects currently installed. Useful for debug.
+ */
++(NSArray*)allStubs;
+
+/**
+ * Setup a block to be called each time a stub is triggered.
+ *
+ * Useful if you want to log all your requests being stubbed for example and see which stub
+ * was used to respond to each request.
+ *
+ * @param block The block to call each time a request is being stubbed by OHHTTPStubs.
+ * Set it to `nil` to do nothing. Defaults is `nil`.
+ */
++(void)onStubActivation:( void(^)(NSURLRequest* request, id<OHHTTPStubsDescriptor> stub) )block;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Umbrella Header Imports
+
+
+#if ! __has_include("OHHTTPStubs/OHHTTPStubs-umbrella.h")
+ // Because this is supposed to be an umbrella header, we should also import every public headers here
+ // (Except if we use already have a better umbrella header generated by CocoaPods)
+ #if __has_include("OHHTTPStubs/OHHTTPStubsResponse+JSON.h")
+ #import "OHHTTPStubs/OHHTTPStubsResponse+JSON.h"
+ #endif
+ #if __has_include("OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h")
+ #import "OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h"
+ #endif
+ #if __has_include("OHHTTPStubs/OHHTTPStubs+Mocktail.h")
+ #import "OHHTTPStubs/OHHTTPStubs+Mocktail.h"
+ #endif
+ #if __has_include("OHHTTPStubs/OHPathHelpers.h")
+ #import "OHHTTPStubs/OHPathHelpers.h"
+ #endif
+#endif