diff options
author | Paul Beusterien <paulbeusterien@google.com> | 2017-05-15 12:27:07 -0700 |
---|---|---|
committer | Paul Beusterien <paulbeusterien@google.com> | 2017-05-15 12:27:07 -0700 |
commit | 98ba64449a632518bd2b86fe8d927f4a960d3ddc (patch) | |
tree | 131d9c4272fa6179fcda6c5a33fcb3b1bd57ad2e /Example/Storage/Tests/Unit/FIRStorageDeleteTests.m | |
parent | 32461366c9e204a527ca05e6e9b9404a2454ac51 (diff) |
Initial
Diffstat (limited to 'Example/Storage/Tests/Unit/FIRStorageDeleteTests.m')
-rw-r--r-- | Example/Storage/Tests/Unit/FIRStorageDeleteTests.m | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/Example/Storage/Tests/Unit/FIRStorageDeleteTests.m b/Example/Storage/Tests/Unit/FIRStorageDeleteTests.m new file mode 100644 index 0000000..42a3b1a --- /dev/null +++ b/Example/Storage/Tests/Unit/FIRStorageDeleteTests.m @@ -0,0 +1,164 @@ +// Copyright 2017 Google +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#import "FIRStorageDeleteTask.h" +#import "FIRStorageTestHelpers.h" + +@interface FIRStorageDeleteTests : XCTestCase + +@property(strong, nonatomic) GTMSessionFetcherService *fetcherService; +@property(strong, nonatomic) FIRStorageMetadata *metadata; +@property(strong, nonatomic) FIRStorage *storage; +@property(strong, nonatomic) id mockApp; + +@end + +@implementation FIRStorageDeleteTests + +- (void)setUp { + [super setUp]; + + NSDictionary *metadataDict = @{ @"bucket" : @"bucket", @"name" : @"path/to/object" }; + self.metadata = [[FIRStorageMetadata alloc] initWithDictionary:metadataDict]; + + id mockOptions = OCMClassMock([FIROptions class]); + OCMStub([mockOptions storageBucket]).andReturn(@"bucket.appspot.com"); + + self.mockApp = OCMClassMock([FIRApp class]); + OCMStub([self.mockApp name]).andReturn(kFIRStorageAppName); + OCMStub([(FIRApp *)self.mockApp options]).andReturn(mockOptions); + + self.fetcherService = [[GTMSessionFetcherService alloc] init]; + self.fetcherService.authorizer = + [[FIRStorageTokenAuthorizer alloc] initWithApp:self.mockApp + fetcherService:self.fetcherService]; + + self.storage = [FIRStorage storageForApp:self.mockApp]; +} + +- (void)tearDown { + self.fetcherService = nil; + self.storage = nil; + self.mockApp = nil; + [super tearDown]; +} + +- (void)testFetcherConfiguration { + XCTestExpectation *expectation = [self expectationWithDescription:@"testSuccessfulFetch"]; + + self.fetcherService.testBlock = + ^(GTMSessionFetcher *fetcher, GTMSessionFetcherTestResponse response) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" + XCTAssertEqualObjects(fetcher.request.URL, [FIRStorageTestHelpers objectURL]); +#pragma clang diagnostic pop + XCTAssertEqualObjects(fetcher.request.HTTPMethod, @"DELETE"); + NSHTTPURLResponse *httpResponse = + [[NSHTTPURLResponse alloc] initWithURL:fetcher.request.URL + statusCode:200 + HTTPVersion:kHTTPVersion + headerFields:nil]; + response(httpResponse, nil, nil); + }; + + FIRStoragePath *path = [FIRStorageTestHelpers objectPath]; + FIRStorageReference *ref = [[FIRStorageReference alloc] initWithStorage:self.storage path:path]; + FIRStorageDeleteTask *task = [[FIRStorageDeleteTask alloc] initWithReference:ref + fetcherService:self.fetcherService + completion:^(NSError *error) { + [expectation fulfill]; + }]; + [task enqueue]; + + [FIRStorageTestHelpers waitForExpectation:self]; +} + +- (void)testSuccessfulFetch { + XCTestExpectation *expectation = [self expectationWithDescription:@"testSuccessfulFetch"]; + + self.fetcherService.testBlock = [FIRStorageTestHelpers successBlock]; + FIRStoragePath *path = [FIRStorageTestHelpers objectPath]; + FIRStorageReference *ref = [[FIRStorageReference alloc] initWithStorage:self.storage path:path]; + FIRStorageDeleteTask *task = [[FIRStorageDeleteTask alloc] initWithReference:ref + fetcherService:self.fetcherService + completion:^(NSError *error) { + XCTAssertEqual(error, nil); + [expectation fulfill]; + }]; + [task enqueue]; + + [FIRStorageTestHelpers waitForExpectation:self]; +} + +- (void)testUnsuccessfulFetchUnauthenticated { + XCTestExpectation *expectation = + [self expectationWithDescription:@"testUnsuccessfulFetchUnauthenticated"]; + + self.fetcherService.testBlock = [FIRStorageTestHelpers unauthenticatedBlock]; + FIRStoragePath *path = [FIRStorageTestHelpers objectPath]; + FIRStorageReference *ref = [[FIRStorageReference alloc] initWithStorage:self.storage path:path]; + FIRStorageDeleteTask *task = + [[FIRStorageDeleteTask alloc] initWithReference:ref + fetcherService:self.fetcherService + completion:^(NSError *error) { + XCTAssertEqual(error.code, + FIRStorageErrorCodeUnauthenticated); + [expectation fulfill]; + }]; + [task enqueue]; + + [FIRStorageTestHelpers waitForExpectation:self]; +} + +- (void)testUnsuccessfulFetchUnauthorized { + XCTestExpectation *expectation = + [self expectationWithDescription:@"testUnsuccessfulFetchUnauthorized"]; + + self.fetcherService.testBlock = [FIRStorageTestHelpers unauthorizedBlock]; + FIRStoragePath *path = [FIRStorageTestHelpers objectPath]; + FIRStorageReference *ref = [[FIRStorageReference alloc] initWithStorage:self.storage path:path]; + FIRStorageDeleteTask *task = + [[FIRStorageDeleteTask alloc] initWithReference:ref + fetcherService:self.fetcherService + completion:^(NSError *error) { + XCTAssertEqual(error.code, + FIRStorageErrorCodeUnauthorized); + [expectation fulfill]; + }]; + [task enqueue]; + + [FIRStorageTestHelpers waitForExpectation:self]; +} + +- (void)testUnsuccessfulFetchObjectDoesntExist { + XCTestExpectation *expectation = + [self expectationWithDescription:@"testUnsuccessfulFetchObjectDoesntExist"]; + + self.fetcherService.testBlock = [FIRStorageTestHelpers notFoundBlock]; + FIRStoragePath *path = [FIRStorageTestHelpers notFoundPath]; + FIRStorageReference *ref = [[FIRStorageReference alloc] initWithStorage:self.storage path:path]; + FIRStorageDeleteTask *task = + [[FIRStorageDeleteTask alloc] initWithReference:ref + fetcherService:self.fetcherService + completion:^(NSError *error) { + XCTAssertEqual(error.code, + FIRStorageErrorCodeObjectNotFound); + [expectation fulfill]; + }]; + [task enqueue]; + + [FIRStorageTestHelpers waitForExpectation:self]; +} + +@end |