diff --git a/MANIFEST.in b/MANIFEST.in index e1e0072..8353cfd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,3 +2,4 @@ include Makefile recursive-include tests *.py recursive-include tests *.xml + recursive-include tests *.yaml diff --git a/setup.cfg b/setup.cfg index 2a679dc..f4a8bf5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -44,8 +44,9 @@ testing = flake8 mock pytest - pytest-cov + pytest-cov pytest-timeout + pytest-vcr requests-mock tox @@ -77,7 +78,7 @@ commands = py.test --cov --cov-report=term --cov-report=xml {posargs} [testenv:flake8] description = run flake8 under {basepython} -commands = flake8 rxv/ tests/ +commands = flake8 rxv/ tests/ extras = testing [testenv:manifest] diff --git a/tests/integration/cassettes/test_RX_V577/RX-V577.yaml b/tests/integration/cassettes/test_RX_V577/RX-V577.yaml new file mode 100644 index 0000000..0fcc3a2 --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/RX-V577.yaml @@ -0,0 +1,795 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.25.1 + method: GET + uri: http://192.168.1.100/YamahaRemoteControl/desc.xml + response: + body: + string: Title_1OnOffParam_1OnOffParam_1AvailableUnavailableParam_11,15,UTF-8Param_11,15,UTF-8OnStandbyOnOffParam_1OnOffDisableEnableParam_1DisableEnableSystem,Misc,Event,NoticeSystem,Power_Control,PowerSystem,Misc,Network,Network_NameSystem,Misc,Network,Network_StandbySystem,Misc,Network,DMC_ControlSystem,Misc,Event,NoticeSystem,Misc,Network,Network_NameSystem,Misc,Network,Network_StandbySystem,Misc,Update,Yamaha_Network_Site,StatusSystem,Misc,Network,DMC_ControlParam_11,9,Latin-1Name,Zone=Param_11,9,Latin-1Param_1Input,Input_Sel=Param_1Param_1Input,Input_Sel=Param_1Val=Param_1:Exp=Param_2:Unit=Param_3-805,165,51dBVolume,Lvl,Val=Param_1:Volume,Lvl,Exp=Param_2:Volume,Lvl,Unit=Param_3-805,165,51dBOnOffVolume,Mute=Param_1OnOffdB0-97Volume,Scale=Param_1dB0-97OnStandbyPower_Control,Power=Param_1OnStandbyLast120 min90 min60 min30 minOffPower_Control,Sleep=Param_1120 min90 min60 min30 minOffPlayPauseStopSkip FwdSkip RevUpDownLeftRightReturnSelReturn to HomeOn ScreenOptionDisplayOnOffParam_1OnOffParam_1Hall + in MunichHall + in ViennaChamberCellar ClubThe Roxy TheatreThe Bottom LineSportsAction + GameRoleplaying + GameMusic + VideoStandardSpectacleSci-FiAdventureDramaMono + MovieSurround + Decoder2ch + Stereo7ch + StereoSurround,Program_Sel,Current,Sound_Program=Param_1Hall in MunichHall in ViennaChamberCellar + ClubThe + Roxy TheatreThe + Bottom LineSportsAction GameRoleplaying GameMusic VideoStandardSpectacleSci-FiAdventureDramaMono + MovieSurround + Decoder2ch + Stereo7ch + StereoOnOffSurround,Program_Sel,Current,Straight=Param_1OnOffOnOffSurround,Program_Sel,Current,Enhancer=Param_1OnOffVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBSound_Video,Tone,Bass,Val=Param_1:Sound_Video,Tone,Bass,Exp=Param_2:Sound_Video,Tone,Bass,Unit=Param_3-60,60,51dBVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBSound_Video,Tone,Treble,Val=Param_1:Sound_Video,Tone,Treble,Exp=Param_2:Sound_Video,Tone,Treble,Unit=Param_3-60,60,51dBVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBVolume,Subwoofer_Trim,Val=Param_1:Volume,Subwoofer_Trim,Exp=Param_2:Volume,Subwoofer_Trim,Unit=Param_3-60,60,51dBAutoOffSound_Video,Adaptive_DRC=Param_1AutoOffAutoOffSurround,_3D_Cinema_DSP=Param_1AutoOffOnOffSound_Video,Direct,Mode=Param_1OnOffAutoOffSound_Video,Extra_Bass=Param_1AutoOffSound_Video,HDMI,Standby_Through_Info=Param_1OnOffOnOffSpeaker_Preout,Speaker_AB,Speaker_A=Param_1OnOffOnOffSpeaker_Preout,Speaker_AB,Speaker_B=Param_1OnOffMain_Zone,Power_Control,PowerMain_Zone,Volume,LvlMain_Zone,Volume,MuteMain_Zone,Input,Input_SelMain_Zone,Config,Name,ZoneMain_Zone,Scene,Scene_SelMain_Zone,Sound_Video,Tone,BassMain_Zone,Sound_Video,Tone,TrebleMain_Zone,Surround,Program_Sel,Current,Sound_ProgramMain_Zone,Surround,Program_Sel,Current,StraightMain_Zone,Surround,Program_Sel,Current,EnhancerMain_Zone,Sound_Video,Adaptive_DRCMain_Zone,Surround,_3D_Cinema_DSPMain_Zone,Sound_Video,Dialogue_Adjust,Dialogue_LiftSystem,Sound_Video,HDMI,Video,Preset_Sel,CurrentMain_Zone,Sound_Video,Direct,ModeMain_Zone,Cursor_Control,CursorMain_Zone,Cursor_Control,Menu_ControlMain_Zone,Volume,Subwoofer_TrimMain_Zone,Power_Control,SleepMain_Zone,Play_Control,PlaybackMain_Zone,Speaker_Preout,Speaker_AB,Speaker_AMain_Zone,Speaker_Preout,Speaker_AB,Speaker_BMain_Zone,Sound_Video,Extra_BassMain_Zone,Volume,ScaleMain_Zone,Cursor_Control,Contents_DisplayMain_Zone,Basic_StatusMain_Zone,Input,Input_Sel_ItemMain_Zone,ConfigMain_Zone,Scene,Scene_Sel_ItemMain_Zone,Cursor_Control,Contents_DisplayVolume,Zone_B,Feature_Availability=Param_1ReadyNot ReadyParam_11,9,Latin-1Name,Zone_B=Param_11,9,Latin-1Param_1Input,Input_Sel=Param_1Val=Param_1:Exp=Param_2:Unit=Param_3-805,165,51dBVolume,Zone_B,Lvl,Val=Param_1:Volume,Zone_B,Lvl,Exp=Param_2:Volume,Zone_B,Lvl,Unit=Param_3-805,165,51dBOnOffVolume,Zone_B,Mute=Param_1OnOffOnOffVolume,Zone_B,Interlock=Param_1OnOffOnOffPower_Control,Zone_B_Power_Info=Param_1OnStandbyPlayPauseStopSkip FwdSkip RevUpDownLeftRightReturnSelReturn to HomeOn ScreenOptionDisplayMain_Zone,Power_Control,PowerMain_Zone,Volume,Zone_B,LvlMain_Zone,Volume,Zone_B,MuteMain_Zone,Input,Input_SelMain_Zone,Config,Name,Zone_BMain_Zone,Volume,Zone_B,InterlockMain_Zone,Cursor_Control,CursorMain_Zone,Cursor_Control,Menu_ControlMain_Zone,Power_Control,SleepMain_Zone,Play_Control,PlaybackMain_Zone,Speaker_Preout,Speaker_AB,Speaker_AMain_Zone,Speaker_Preout,Speaker_AB,Speaker_BMain_Zone,Basic_StatusMain_Zone,Input,Input_Sel_ItemMain_Zone,ConfigFeature_Availability=Param_1ReadyNot ReadyAuto UpAuto DownCancelTuning,Freq,AM,Val=Param_1:Tuning,Freq,AM,Exp=Param_2:Tuning,Freq,AM,Unit=Param_3530,1710,10Auto UpAuto + Down0kHzAuto + UpAuto DownCancelTuning,Freq,FM,Val=Param_1:Tuning,Freq,FM,Exp=Param_2:Tuning,Freq,FM,Unit=Param_38750,10790,20Auto UpAuto + Down2MHzUpDownPreset,Preset_Sel=Param_1AMFMTuning,Band=Param_1AMFMVal=Param_1:Exp=Param_2:Unit=Param_3530,1710,100kHzTuning,Freq,AM,Val=Param_1:Tuning,Freq,AM,Exp=Param_2:Tuning,Freq,AM,Unit=Param_3530,1710,10Auto UpAuto + Down0kHzVal=Param_1:Exp=Param_2:Unit=Param_38750,10790,202MHzTuning,Freq,FM,Val=Param_1:Tuning,Freq,FM,Exp=Param_2:Tuning,Freq,FM,Unit=Param_38750,10790,20Auto UpAuto + Down2MHzParam_1Preset,Preset_Sel=Param_1Tuning,Band=Param_1AMFMTuning,Freq,Current,Val=Param_1:Tuning,Freq,Current,Exp=Param_2:Tuning,Freq,Current,Unit=Param_3530,1710,108750,10790,20Auto UpAuto + Down02kHzMHzSignal_Info,Tuned=Param_1NegateAssertSignal_Info,Stereo=Param_1NegateAssertTuner,Play_Control,Search_ModeTuner,Play_Control,Preset,Preset_SelTuner,Play_Control,Tuning,BandTuner,Play_Control,Tuning,Freq,FMTuner,Play_Control,Tuning,Freq,AMTuner,Play_Control,Tuning,Freq,FM,ValTuner,Play_Control,Tuning,Freq,AM,ValTuner,Play_InfoTuner,ConfigTuner,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayPausePlayback_Info=Param_1PlayStopSkip + FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayStopInput_Logo,URL_S=Param_10,128,UTF-8AirPlay,Play_Control,PlaybackAirPlay,Play_InfoAirPlay,ConfigFeature_Availability=Param_1ReadyNot ReadyPlayPausePlayback_Info=Param_1PlayPauseStopSkip + FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Track=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopInput_Logo,URL_S=Param_10,128,UTF-8Spotify,Play_Control,PlaybackSpotify,Play_InfoSpotify,ConfigExtendedFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffSongsAlbumsPlay_Mode,Shuffle=Param_1OffSongsAlbumsPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffSongsAlbumsAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn + to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1iPod_USB,Play_Control,PlaybackiPod_USB,List_Control,Direct_SeliPod_USB,List_Control,Jump_LineiPod_USB,List_Control,CursoriPod_USB,List_Control,PageiPod_USB,Play_Control,Play_Mode,RepeatiPod_USB,Play_Control,Play_Mode,ShuffleiPod_USB,Play_Control,iPod_ModeiPod_USB,Play_InfoiPod_USB,List_InfoiPod_USB,ConfigFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffOnPlay_Mode,Shuffle=Param_1OffOnPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,64,UTF-8Meta_Info,Album=Param_10,64,UTF-8Meta_Info,Song=Param_10,64,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffOnAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn + to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1USB,Play_Control,Play_Mode,RepeatUSB,Play_Control,Play_Mode,ShuffleUSB,Play_Control,PlaybackUSB,Play_Control,Preset,Preset_SelUSB,List_Control,Direct_SelUSB,List_Control,Jump_LineUSB,List_Control,CursorUSB,List_Control,PageUSB,Play_InfoUSB,List_InfoUSB,ConfigUSB,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayStopPlayback_Info=Param_1PlayStopMeta_Info,Station=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayStopAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn + to HomeParam_11,65536,1UpDownOnOffMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1NET_RADIO,Play_Control,PlaybackNET_RADIO,List_Control,Direct_SelNET_RADIO,List_Control,Jump_LineNET_RADIO,List_Control,CursorNET_RADIO,List_Control,PageNET_RADIO,Play_Control,Preset,Preset_SelNET_RADIO,List_Control,BookmarkNET_RADIO,Play_InfoNET_RADIO,List_InfoNET_RADIO,ConfigNET_RADIO,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffOnPlay_Mode,Shuffle=Param_1OffOnPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffOnAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn + to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1SERVER,Play_Control,Play_Mode,RepeatSERVER,Play_Control,Play_Mode,ShuffleSERVER,Play_Control,PlaybackSERVER,Play_Control,Preset,Preset_SelSERVER,List_Control,Direct_SelSERVER,List_Control,Jump_LineSERVER,List_Control,CursorSERVER,List_Control,PageSERVER,Play_Control,Play_URISERVER,Play_InfoSERVER,List_InfoSERVER,ConfigSERVER,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip + FwdThumb UpThumb + DownFeedback=Param_1---Thumb UpThumb DownMeta_Info,Station=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Track=Param_10,128,UTF-8Feedback=Param_1---Thumb UpThumb DownFeature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFInput_Logo,URL_S=Param_10,128,UTF-8Param_11,8,1,Line_%UpDownReturnSelReturn + to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1Pandora,Play_Control,FeedbackPandora,Play_Control,PlaybackPandora,Play_Control,Preset,Preset_SelPandora,List_Control,Direct_SelPandora,List_Control,Jump_LinePandora,List_Control,CursorPandora,List_Control,PagePandora,Play_InfoPandora,List_InfoPandora,ConfigPandora,Play_Control,Preset,Preset_Sel_Item + headers: + Content-Language: + - en + Content-Length: + - '76367' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml b/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml new file mode 100644 index 0000000..aa1c2dc --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml @@ -0,0 +1,66 @@ +interactions: +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '93' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: OnStandbyOff-5101dBOff01dBdBNot + ReadyOn-5101dBOffNET + RADIONET RADIORWNET + RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1OffOn7ch + Stereo<_3D_Cinema_DSP>Auto01dB01dBOffOnOnOffOffOnOff + headers: + Content-Length: + - '1456' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/cassettes/test_RX_V577/test_fade.yaml b/tests/integration/cassettes/test_RX_V577/test_fade.yaml new file mode 100644 index 0000000..1af735f --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/test_fade.yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: -5001dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '92' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: -5001dB + headers: + Content-Length: + - '133' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -5001dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -4901dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -4801dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '92' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: -4801dB + headers: + Content-Length: + - '133' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '92' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: -4801dB + headers: + Content-Length: + - '133' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -4801dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -4901dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -5001dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: -5101dB + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '126' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '91' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '92' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: -5101dB + headers: + Content-Length: + - '133' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/cassettes/test_RX_V577/test_inputs.yaml b/tests/integration/cassettes/test_RX_V577/test_inputs.yaml new file mode 100644 index 0000000..54f741b --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/test_inputs.yaml @@ -0,0 +1,190 @@ +interactions: +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '112' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: PandoraRW + Pandora /YamahaRemoteControl/Icons/icon075.pngPandora1SpotifyRW + Spotify /YamahaRemoteControl/Icons/icon102.pngSpotify1AirPlayRW + AirPlay /YamahaRemoteControl/Icons/icon067.pngAirPlay1SERVERRW + SERVER /YamahaRemoteControl/Icons/icon006.pngSERVER1NET + RADIORWNET RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1USBRW USB /YamahaRemoteControl/Icons/icon009.pngUSB1iPod + (USB)R USB /YamahaRemoteControl/Icons/icon011.pngiPod_USB1TUNERRW TUNER /YamahaRemoteControl/Icons/icon008.pngTuner1HDMI1RWPS3 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation + 31HDMI2RW HDMI2 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation + 41HDMI3RW HDMI3 /YamahaRemoteControl/Icons/icon004.png1HDMI4RWChromecas/YamahaRemoteControl/Icons/icon004.pngOsdname:Chromecast1HDMI5RW HDMI5 /YamahaRemoteControl/Icons/icon004.png1HDMI6RW HDMI6 /YamahaRemoteControl/Icons/icon004.png1AV1RW AV1 /YamahaRemoteControl/Icons/icon003.png1AV2RW AV2 /YamahaRemoteControl/Icons/icon003.png1AV3RW AV3 /YamahaRemoteControl/Icons/icon003.png1AV4RW AV4 /YamahaRemoteControl/Icons/icon003.png1AV5RW AV5 /YamahaRemoteControl/Icons/icon003.png1AV6RW AV6 /YamahaRemoteControl/Icons/icon003.png1AUXRW AUX /YamahaRemoteControl/Icons/icon104.png1 + headers: + Content-Length: + - '4236' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: HDMI1 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '99' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '101' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI1 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: HDMI2 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '99' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '101' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI2 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/cassettes/test_RX_V577/test_menu.yaml b/tests/integration/cassettes/test_RX_V577/test_menu.yaml new file mode 100644 index 0000000..a55c912 --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/test_menu.yaml @@ -0,0 +1,584 @@ +interactions: +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '112' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: PandoraRW + Pandora /YamahaRemoteControl/Icons/icon075.pngPandora1SpotifyRW + Spotify /YamahaRemoteControl/Icons/icon102.pngSpotify1AirPlayRW + AirPlay /YamahaRemoteControl/Icons/icon067.pngAirPlay1SERVERRW + SERVER /YamahaRemoteControl/Icons/icon006.pngSERVER1NET + RADIORWNET RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1USBRW USB /YamahaRemoteControl/Icons/icon009.pngUSB1iPod + (USB)R USB /YamahaRemoteControl/Icons/icon011.pngiPod_USB1TUNERRW TUNER /YamahaRemoteControl/Icons/icon008.pngTuner1HDMI1RWPS3 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation + 31HDMI2RW HDMI2 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation + 41HDMI3RW HDMI3 /YamahaRemoteControl/Icons/icon004.png1HDMI4RWChromecas/YamahaRemoteControl/Icons/icon004.pngOsdname:Chromecast1HDMI5RW HDMI5 /YamahaRemoteControl/Icons/icon004.png1HDMI6RW HDMI6 /YamahaRemoteControl/Icons/icon004.png1AV1RW AV1 /YamahaRemoteControl/Icons/icon003.png1AV2RW AV2 /YamahaRemoteControl/Icons/icon003.png1AV3RW AV3 /YamahaRemoteControl/Icons/icon003.png1AV4RW AV4 /YamahaRemoteControl/Icons/icon003.png1AV5RW AV5 /YamahaRemoteControl/Icons/icon003.png1AV6RW AV6 /YamahaRemoteControl/Icons/icon003.png1AUXRW AUX /YamahaRemoteControl/Icons/icon104.png1 + headers: + Content-Length: + - '4236' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: NET RADIO + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '103' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '101' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '87' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: Ready1NET + RADIOBookmarksContainerLocationsContainerGenresContainerNew + StationsContainerPopular + StationsContainerPodcastsContainerHelpContainerGet + Access CodeContainer18 + headers: + Content-Length: + - '851' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: 3 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '109' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '115' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: Up + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '104' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '109' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: NET RADIO + headers: + Content-Length: + - '110' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: Down + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '106' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '109' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: HDMI1 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '99' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '101' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI1 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI1 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: Right + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '111' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '113' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI1 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '102' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: HDMI1 + headers: + Content-Length: + - '106' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: Left + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '110' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '113' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/cassettes/test_RX_V577/test_on_off.yaml b/tests/integration/cassettes/test_RX_V577/test_on_off.yaml new file mode 100644 index 0000000..dd687d2 --- /dev/null +++ b/tests/integration/cassettes/test_RX_V577/test_on_off.yaml @@ -0,0 +1,92 @@ +interactions: +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '110' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: Standby + headers: + Content-Length: + - '116' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: On + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '104' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: + headers: + Content-Length: + - '109' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +- request: + body: GetParam + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '110' + Content-Type: + - text/xml + User-Agent: + - python-requests/2.25.1 + method: POST + uri: http://192.168.1.100/YamahaRemoteControl/ctrl + response: + body: + string: On + headers: + Content-Length: + - '111' + Content-Type: + - text/xml; charset="utf-8" + Server: + - AV_Receiver/3.1 (RX-V577) + status: + code: 200 + message: OK +version: 1 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py new file mode 100644 index 0000000..0ca80cb --- /dev/null +++ b/tests/integration/conftest.py @@ -0,0 +1,14 @@ +import os + +import pytest + + +@pytest.fixture(scope='module') +def vcr_config(): + return {'match_on': ['method', 'path', 'raw_body']} + + +@pytest.fixture(scope='module') +def vcr_cassette_dir(request): + # Put all cassettes in tests/integration/cassettes/{module}/{test}.yaml + return os.path.join('tests/integration/cassettes', request.module.__name__) diff --git a/tests/integration/test_RX_V577.py b/tests/integration/test_RX_V577.py new file mode 100644 index 0000000..3027911 --- /dev/null +++ b/tests/integration/test_RX_V577.py @@ -0,0 +1,58 @@ +"""Integration test for the RX-V577 model receiver.""" +import pytest + +import rxv + + +@pytest.fixture +def rx(vcr): + with vcr.use_cassette('RX-V577.yaml'): + return rxv.RXV( + 'http://192.168.1.100:80/YamahaRemoteControl/ctrl', 'RX-V577' + ) + + +@pytest.mark.vcr() +def test_on_off(rx): + assert rx.on is False, "reciver should be turned off" + rx.on = True + assert rx.on + + +@pytest.mark.vcr() +def test_basic_status(rx): + bs = rx.basic_status + assert bs.input == rx.input + assert bs.on == 'On' + + +@pytest.mark.vcr() +def test_inputs(rx): + assert rx.input in rx.inputs() + assert "HDMI1" in rx.inputs() + rx.input = "HDMI1" + assert rx.input == "HDMI1" + rx.input = "HDMI2" + assert rx.input == "HDMI2" + + +@pytest.mark.vcr() +def test_menu(rx): + rx.input = "NET RADIO" + assert rx.menu_status() + rx.menu_jump_line(3) + rx.menu_up() + rx.menu_down() + + rx.input = "HDMI1" + rx.menu_right() + rx.menu_left() + + +@pytest.mark.vcr() +def test_fade(rx): + rx.volume = -50 + rx.volume_fade(-48) + assert rx.volume == -48 + rx.volume_fade(-51) + assert rx.volume == -51