mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-09-07 15:07:17 +00:00
fix(stereo): skip inspection on unsupported models
This commit is contained in:
committed by
Tobias Gesellchen
parent
4bd548915f
commit
2d074d4ecf
@@ -65,6 +65,15 @@ func (app *WebApp) HandleGetStereoPair(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if !stereoPairCapable(conn.DeviceInfo) {
|
||||
app.writeStereoPairResult(w, conn.DeviceInfo, stereopair.Result{
|
||||
Operation: stereopair.OperationInspect,
|
||||
Status: stereopair.StatusSucceeded,
|
||||
}, nil)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
result, err := app.StereoPairs.Inspect(host)
|
||||
app.writeStereoPairResult(w, conn.DeviceInfo, result, err)
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import (
|
||||
)
|
||||
|
||||
type fakeStereoPairLifecycle struct {
|
||||
inspectCalls int
|
||||
inspectResult stereopair.Result
|
||||
inspectErr error
|
||||
createResult stereopair.Result
|
||||
@@ -32,6 +33,7 @@ type fakeStereoPairLifecycle struct {
|
||||
}
|
||||
|
||||
func (f *fakeStereoPairLifecycle) Inspect(string) (stereopair.Result, error) {
|
||||
f.inspectCalls++
|
||||
return f.inspectResult, f.inspectErr
|
||||
}
|
||||
|
||||
@@ -109,6 +111,31 @@ func TestHandleGetStereoPairReportsStandaloneCapableSpeaker(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleGetStereoPairSkipsUnsupportedModel(t *testing.T) {
|
||||
fake := &fakeStereoPairLifecycle{}
|
||||
app := NewWebApp()
|
||||
app.StereoPairs = fake
|
||||
app.AddDevice("192.0.2.30", webtypes.NewDeviceConnection(nil, &models.DeviceInfo{
|
||||
DeviceID: "st30-id",
|
||||
Name: "Living Room",
|
||||
Type: "SoundTouch 30",
|
||||
IPAddress: "192.0.2.30",
|
||||
}))
|
||||
|
||||
request := withChiParams(httptest.NewRequest(http.MethodGet,
|
||||
"/api/control/devices/192.0.2.30/stereo-pair", nil), map[string]string{"id": "192.0.2.30"})
|
||||
response := httptest.NewRecorder()
|
||||
app.HandleGetStereoPair(response, request)
|
||||
|
||||
payload := decodeStereoPairAPIResponse(t, response)
|
||||
if response.Code != http.StatusOK || !payload.Success || payload.Data.Capable || payload.Data.Paired {
|
||||
t.Fatalf("unexpected unsupported-model response: status=%d payload=%+v", response.Code, payload)
|
||||
}
|
||||
if fake.inspectCalls != 0 {
|
||||
t.Fatalf("stereo lifecycle Inspect calls = %d, want 0", fake.inspectCalls)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleGetStereoPairMapsUnavailableSpeakerToBadGateway(t *testing.T) {
|
||||
fake := &fakeStereoPairLifecycle{
|
||||
inspectResult: stereopair.Result{
|
||||
|
||||
Reference in New Issue
Block a user