From e40e8163d0921cab7c417f89c93467624c00df23 Mon Sep 17 00:00:00 2001 From: Eugene Nikolskyi Date: Tue, 2 Jun 2015 14:43:54 -0700 Subject: [PATCH] Fix photo not displaying on Apple TV with OS 7.2 Fixes https://github.com/ConnectSDK/Connect-SDK-iOS/issues/157 --- .../AirPlayServiceIntegrationTests.m | 102 ++++++++++++++++++ .../{ => SupportingFiles}/Info.plist | 0 .../Helpers/AirPlayServiceHTTPTests.m | 94 ++++++++++++---- .../{ => SupportingFiles}/Info.plist | 0 ...n-francisco-peaks-of-flagstaff-718x544.jpg | Bin 0 -> 62916 bytes Services/Helpers/AirPlayServiceHTTP.m | 4 +- 6 files changed, 177 insertions(+), 23 deletions(-) create mode 100644 ConnectSDKIntegrationTests/AirPlayServiceIntegrationTests.m rename ConnectSDKIntegrationTests/{ => SupportingFiles}/Info.plist (100%) rename ConnectSDKTests/{ => SupportingFiles}/Info.plist (100%) create mode 100644 ConnectSDKTests/SupportingFiles/the-san-francisco-peaks-of-flagstaff-718x544.jpg diff --git a/ConnectSDKIntegrationTests/AirPlayServiceIntegrationTests.m b/ConnectSDKIntegrationTests/AirPlayServiceIntegrationTests.m new file mode 100644 index 0000000..b1958b5 --- /dev/null +++ b/ConnectSDKIntegrationTests/AirPlayServiceIntegrationTests.m @@ -0,0 +1,102 @@ +// +// AirPlayServiceIntegrationTests.m +// ConnectSDK +// +// Created by Eugene Nikolskyi on 2015-02-06. +// Copyright (c) 2015 LG Electronics. All rights reserved. +// +// 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 "AirPlayService.h" +#import "DiscoveryManager.h" +#import "ZeroConfDiscoveryProvider.h" + +#import "OCMArg+ArgumentCaptor.h" +#import "OCMStubRecorder+SpectaAsync.h" + +SpecBegin(AirPlayService) + +describe(@"ConnectSDK", ^{ + __block DiscoveryManager *manager; + __block id delegateStub; + + beforeEach(^{ + manager = [DiscoveryManager new]; + manager.deviceStore = nil; + + delegateStub = OCMProtocolMock(@protocol(DiscoveryManagerDelegate)); + manager.delegate = delegateStub; + + [AirPlayService setAirPlayServiceMode:AirPlayServiceModeMedia]; + [manager registerDeviceService:[AirPlayService class] + withDiscovery:[ZeroConfDiscoveryProvider class]]; + }); + + context(@"after AppleTV device is connected", ^{ + __block ConnectableDevice *appleTV; + + beforeEach(^{ + waitUntil(^(DoneCallback done) { + [OCMStub([delegateStub discoveryManager:manager + didFindDevice:[OCMArg captureTo:&appleTV]]) + andDoneWaiting:done]; + + [manager startDiscovery]; + }); + + expect([appleTV serviceWithName:kConnectSDKAirPlayServiceId]).notTo.beNil(); + }); + + it(@"should display photo", ^{ + NSURL *url = [[NSBundle bundleForClass:self.class] + URLForResource:@"the-san-francisco-peaks-of-flagstaff-718x544" + withExtension:@"jpg"]; + MediaInfo *mediaInfo = [[MediaInfo alloc] initWithURL:url + mimeType:@"image/jpg"]; + + waitUntil(^(DoneCallback done) { + MediaPlayerSuccessBlock successBlock = ^(MediaLaunchObject *_) { + // the delay is not required here, but allows to visually + // check if the image is indeed displayed + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, .5 * NSEC_PER_SEC), + dispatch_get_main_queue(), + ^{ + done(); + }); + }; + FailureBlock failureBlock = ^(NSError *error) { + failure([NSString stringWithFormat:@"should not happen: %@", + error]); + done(); + }; + [[appleTV mediaPlayer] displayImageWithMediaInfo:mediaInfo + success:successBlock + failure:failureBlock]; + }); + }); + + afterEach(^{ + [appleTV disconnect]; + appleTV = nil; + }); + }); + + afterEach(^{ + [manager stopDiscovery]; + delegateStub = nil; + manager = nil; + }); +}); + +SpecEnd diff --git a/ConnectSDKIntegrationTests/Info.plist b/ConnectSDKIntegrationTests/SupportingFiles/Info.plist similarity index 100% rename from ConnectSDKIntegrationTests/Info.plist rename to ConnectSDKIntegrationTests/SupportingFiles/Info.plist diff --git a/ConnectSDKTests/Services/Helpers/AirPlayServiceHTTPTests.m b/ConnectSDKTests/Services/Helpers/AirPlayServiceHTTPTests.m index d58ed9b..4f59139 100644 --- a/ConnectSDKTests/Services/Helpers/AirPlayServiceHTTPTests.m +++ b/ConnectSDKTests/Services/Helpers/AirPlayServiceHTTPTests.m @@ -22,14 +22,72 @@ #import "AirPlayServiceHTTP_Private.h" #import "NSInvocation+ObjectGetter.h" +#import "OCMStubRecorder+XCTestExpectation.h" /// Tests for the @c AirPlayServiceHTTP class. @interface AirPlayServiceHTTPTests : XCTestCase +@property (strong) id /*AirPlayService **/ serviceMock; +@property (strong) AirPlayServiceHTTP *serviceHTTP; +@property (strong) id /**/ serviceCommandDelegateMock; + @end @implementation AirPlayServiceHTTPTests +#pragma mark - Setup + +- (void)setUp { + [super setUp]; + + self.serviceMock = OCMClassMock([AirPlayService class]); + self.serviceHTTP = [[AirPlayServiceHTTP alloc] + initWithAirPlayService:self.serviceMock]; + + self.serviceCommandDelegateMock = OCMStrictProtocolMock(@protocol(ServiceCommandDelegate)); + self.serviceHTTP.serviceCommandDelegate = self.serviceCommandDelegateMock; +} + +- (void)tearDown { + self.serviceCommandDelegateMock = nil; + self.serviceHTTP = nil; + self.serviceMock = nil; + + [super tearDown]; +} + +#pragma mark - Request Tests + +- (void)testDisplayImageShouldSendPUTPhotoRequest { + id serviceDescriptionMock = OCMClassMock([ServiceDescription class]); + [OCMStub([serviceDescriptionMock commandURL]) andReturn: + [NSURL URLWithString:@"http://10.0.0.1:9099/"]]; + [OCMStub([self.serviceMock serviceDescription]) andReturn:serviceDescriptionMock]; + + XCTestExpectation *commandIsSent = [self expectationWithDescription: + @"Proper request should be sent"]; + [OCMExpect([self.serviceCommandDelegateMock sendCommand: + [OCMArg checkWithBlock:^BOOL(ServiceCommand *command) { + return [@"PUT" isEqualToString:command.HTTPMethod]; + }] + withPayload:OCMOCK_NOTNIL + toURL: + [OCMArg checkWithBlock:^BOOL(NSURL *url) { + return [@"/photo" isEqualToString:url.path]; + }]]) andFulfillExpectation:commandIsSent]; + + NSURL *url = [[NSBundle bundleForClass:self.class] URLForResource:@"the-san-francisco-peaks-of-flagstaff-718x544" + withExtension:@"jpg"]; + MediaInfo *mediaInfo = [[MediaInfo alloc] initWithURL:url + mimeType:@"image/jpg"]; + [self.serviceHTTP displayImageWithMediaInfo:mediaInfo + success:nil + failure:nil]; + + [self waitForExpectationsWithTimeout:kDefaultAsyncTestTimeout handler:nil]; + OCMVerifyAll(self.serviceCommandDelegateMock); +} + #pragma mark - getPlayState Tests /// Tests that @c -getPlayStateWithSuccess:failure: properly infers the Paused @@ -94,44 +152,38 @@ - (void)checkGetPlayStateShouldReturnPlayState:(MediaControlPlayState)expectedPl - (void)checkGetPlayStateShouldReturnPlayState:(MediaControlPlayState)expectedPlayState forMockResponse:(NSDictionary *)response { // Arrange - id serviceMock = OCMClassMock([AirPlayService class]); - AirPlayServiceHTTP *serviceHTTP = [[AirPlayServiceHTTP alloc] - initWithAirPlayService:serviceMock]; - - id serviceCommandDelegateMock = OCMProtocolMock(@protocol(ServiceCommandDelegate)); - serviceHTTP.serviceCommandDelegate = serviceCommandDelegateMock; - - [OCMExpect([serviceCommandDelegateMock sendCommand:OCMOCK_NOTNIL - withPayload:OCMOCK_ANY - toURL:OCMOCK_ANY]) andDo:^(NSInvocation *invocation) { - ServiceCommand *command = [invocation objectArgumentAtIndex:0]; - XCTAssertNotNil(command, @"Couldn't get the command argument"); - - dispatch_async(dispatch_get_main_queue(), ^{ - command.callbackComplete(response); - }); + [OCMExpect([self.serviceCommandDelegateMock sendCommand:OCMOCK_NOTNIL + withPayload:OCMOCK_ANY + toURL:OCMOCK_ANY]) + andDo:^(NSInvocation *invocation) { + ServiceCommand *command = [invocation objectArgumentAtIndex:0]; + XCTAssertNotNil(command, @"Couldn't get the command argument"); + + dispatch_async(dispatch_get_main_queue(), ^{ + command.callbackComplete(response); + }); }]; XCTestExpectation *didReceivePlayState = [self expectationWithDescription: @"received playState"]; // Act - [serviceHTTP getPlayStateWithSuccess:^(MediaControlPlayState playState) { + [self.serviceHTTP getPlayStateWithSuccess:^(MediaControlPlayState playState) { XCTAssertEqual(playState, expectedPlayState, @"playState is incorrect"); [didReceivePlayState fulfill]; } - failure:^(NSError *error) { - XCTFail(@"Failure %@", error); - }]; + failure:^(NSError *error) { + XCTFail(@"Failure %@", error); + }]; // Assert [self waitForExpectationsWithTimeout:kDefaultAsyncTestTimeout handler:^(NSError *error) { XCTAssertNil(error); - OCMVerifyAll(serviceCommandDelegateMock); }]; + OCMVerifyAll(self.serviceCommandDelegateMock); } @end diff --git a/ConnectSDKTests/Info.plist b/ConnectSDKTests/SupportingFiles/Info.plist similarity index 100% rename from ConnectSDKTests/Info.plist rename to ConnectSDKTests/SupportingFiles/Info.plist diff --git a/ConnectSDKTests/SupportingFiles/the-san-francisco-peaks-of-flagstaff-718x544.jpg b/ConnectSDKTests/SupportingFiles/the-san-francisco-peaks-of-flagstaff-718x544.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25948967b0d22c3e0c0a64b0d510a8bd39c09124 GIT binary patch literal 62916 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

ERG<9it9U)tw!Oac&%8U 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 O1dhE$Zy9Psx&PVn$J6ux literal 0 HcmV?d00001 diff --git a/Services/Helpers/AirPlayServiceHTTP.m b/Services/Helpers/AirPlayServiceHTTP.m index dd19026..fc8015c 100644 --- a/Services/Helpers/AirPlayServiceHTTP.m +++ b/Services/Helpers/AirPlayServiceHTTP.m @@ -287,8 +287,8 @@ - (void) displayImageWithMediaInfo:(MediaInfo *)mediaInfo success:(MediaPlayerSu NSString *commandPathComponent = @"photo"; NSURL *commandURL = [self.service.serviceDescription.commandURL URLByAppendingPathComponent:commandPathComponent]; - ServiceCommand *command = [ServiceCommand commandWithDelegate:self target:commandURL payload:nil]; - command.HTTPMethod = @"POST"; + ServiceCommand *command = [ServiceCommand commandWithDelegate:self.serviceCommandDelegate target:commandURL payload:nil]; + command.HTTPMethod = @"PUT"; command.callbackComplete = ^(id responseObject) { LaunchSession *launchSession = [LaunchSession launchSessionForAppId:commandPathComponent]; launchSession.sessionType = LaunchSessionTypeMedia;