Feature/move close stream (#176)

* Move stream destroy closer to where stream is retrieved

* Change BNB_SUBSONIC_URL to be of type URLBuilder to better handle URL construction rather than string concat, should addresse #169
This commit is contained in:
Simon J
2023-10-10 11:25:55 +11:00
committed by GitHub
parent b8caf90e06
commit a5689c3d4b
5 changed files with 176 additions and 178 deletions

View File

@@ -58,8 +58,6 @@ const asBoolean = (value: string) => value == "true";
const asInt = (value: string) => Number.parseInt(value); const asInt = (value: string) => Number.parseInt(value);
const asStringNoTrailingSlash = (value: string) => value.replace(/\/$/, "");
export default function () { export default function () {
const port = bnbEnvVar<number>("PORT", { default: 4534, parser: asInt })!; const port = bnbEnvVar<number>("PORT", { default: 4534, parser: asInt })!;
const bonobUrl = bnbEnvVar("URL", { const bonobUrl = bnbEnvVar("URL", {
@@ -100,8 +98,7 @@ export default function () {
sid: bnbEnvVar<number>("SONOS_SERVICE_ID", { default: 246, parser: asInt }), sid: bnbEnvVar<number>("SONOS_SERVICE_ID", { default: 246, parser: asInt }),
}, },
subsonic: { subsonic: {
// todo: why isnt this a url like bonobUrl above? url: url(bnbEnvVar("SUBSONIC_URL", { legacy: ["BONOB_NAVIDROME_URL"], default: `http://${hostname()}:4533` })!),
url: bnbEnvVar("SUBSONIC_URL", { legacy: ["BONOB_NAVIDROME_URL"], default: `http://${hostname()}:4533`, parser: asStringNoTrailingSlash })!,
customClientsFor: bnbEnvVar<string>("SUBSONIC_CUSTOM_CLIENTS", { legacy: ["BONOB_NAVIDROME_CUSTOM_CLIENTS"] }), customClientsFor: bnbEnvVar<string>("SUBSONIC_CUSTOM_CLIENTS", { legacy: ["BONOB_NAVIDROME_CUSTOM_CLIENTS"] }),
artistImageCache: bnbEnvVar<string>("SUBSONIC_ARTIST_IMAGE_CACHE"), artistImageCache: bnbEnvVar<string>("SUBSONIC_ARTIST_IMAGE_CACHE"),
}, },

View File

@@ -406,13 +406,17 @@ function server(
trackId: id, trackId: id,
range: req.headers["range"] || undefined, range: req.headers["range"] || undefined,
}) })
.then((stream) => {
res.on('close', () => {
stream.stream.destroy()
});
return stream;
})
.then((stream) => ({ musicLibrary: it, stream })) .then((stream) => ({ musicLibrary: it, stream }))
) )
.then(({ musicLibrary, stream }) => { .then(({ musicLibrary, stream }) => {
logger.debug( logger.debug(
`${trace} bnb<- stream response from music service for ${id}, status=${ `${trace} bnb<- stream response from music service for ${id}, status=${stream.status}, headers=(${JSON.stringify(stream.headers)})`
stream.status
}, headers=(${JSON.stringify(stream.headers)})`
); );
const sonosisfyContentType = (contentType: string) => const sonosisfyContentType = (contentType: string) =>
@@ -436,9 +440,7 @@ function server(
nowPlaying: boolean; nowPlaying: boolean;
}) => { }) => {
logger.debug( logger.debug(
`${trace} bnb-> ${ `${trace} bnb-> ${req.path}, status=${status}, headers=${JSON.stringify(headers)}`
req.path
}, status=${status}, headers=${JSON.stringify(headers)}`
); );
(nowPlaying (nowPlaying
? musicLibrary.nowPlaying(id) ? musicLibrary.nowPlaying(id)
@@ -450,9 +452,6 @@ function server(
.forEach(([header, value]) => { .forEach(([header, value]) => {
res.setHeader(header, value!); res.setHeader(header, value!);
}); });
res.on('close', () => {
stream.stream.destroy()
});
if (sendStream) stream.stream.pipe(filter).pipe(res) if (sendStream) stream.stream.pipe(filter).pipe(res)
else res.send() else res.send()
}); });

View File

@@ -32,6 +32,7 @@ import { b64Encode, b64Decode } from "./b64";
import logger from "./logger"; import logger from "./logger";
import { assertSystem, BUrn } from "./burn"; import { assertSystem, BUrn } from "./burn";
import { artist } from "./smapi"; import { artist } from "./smapi";
import { URLBuilder } from "./url_builder";
export const BROWSER_HEADERS = { export const BROWSER_HEADERS = {
accept: accept:
@@ -412,12 +413,12 @@ interface SubsonicMusicLibrary extends MusicLibrary {
} }
export class Subsonic implements MusicService { export class Subsonic implements MusicService {
url: string; url: URLBuilder;
streamClientApplication: StreamClientApplication; streamClientApplication: StreamClientApplication;
externalImageFetcher: ImageFetcher; externalImageFetcher: ImageFetcher;
constructor( constructor(
url: string, url: URLBuilder,
streamClientApplication: StreamClientApplication = DEFAULT, streamClientApplication: StreamClientApplication = DEFAULT,
externalImageFetcher: ImageFetcher = axiosImageFetcher externalImageFetcher: ImageFetcher = axiosImageFetcher
) { ) {
@@ -433,7 +434,7 @@ export class Subsonic implements MusicService {
config: AxiosRequestConfig | undefined = {} config: AxiosRequestConfig | undefined = {}
) => ) =>
axios axios
.get(`${this.url}${path}`, { .get(this.url.append({ pathname: path }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
u: username, u: username,
v: "1.16.1", v: "1.16.1",

View File

@@ -374,31 +374,31 @@ describe("config", () => {
"BONOB_NAVIDROME_URL", "BONOB_NAVIDROME_URL",
])("%s", (k) => { ])("%s", (k) => {
describe(`when ${k} is not specified`, () => { describe(`when ${k} is not specified`, () => {
it(`should default to http://${hostname()}:4533`, () => { it(`should default to http://${hostname()}:4533/`, () => {
expect(config().subsonic.url).toEqual(`http://${hostname()}:4533`); expect(config().subsonic.url.href()).toEqual(`http://${hostname()}:4533/`);
}); });
}); });
describe(`when ${k} is ''`, () => { describe(`when ${k} is ''`, () => {
it(`should default to http://${hostname()}:4533`, () => { it(`should default to http://${hostname()}:4533/`, () => {
process.env[k] = ""; process.env[k] = "";
expect(config().subsonic.url).toEqual(`http://${hostname()}:4533`); expect(config().subsonic.url.href()).toEqual(`http://${hostname()}:4533/`);
}); });
}); });
describe(`when ${k} is specified`, () => { describe(`when ${k} is specified`, () => {
it(`should use it for ${k}`, () => { it(`should use it for ${k}`, () => {
const url = "http://navidrome.example.com:1234"; const url = "http://navidrome.example.com:1234/some-context-path";
process.env[k] = url; process.env[k] = url;
expect(config().subsonic.url).toEqual(url); expect(config().subsonic.url.href()).toEqual(url);
}); });
}); });
describe(`when ${k} is specified with trailing slash`, () => { describe(`when ${k} is specified with trailing slash`, () => {
it(`should remove the trailing slash and use it for ${k}`, () => { it(`should maintain the trailing slash as URLBuilder will remove it when required ${k}`, () => {
const url = "http://navidrome.example.com:1234"; const url = "http://navidrome.example.com:1234/";
process.env[k] = `${url}/`; process.env[k] = url;
expect(config().subsonic.url).toEqual(url); expect(config().subsonic.url.href()).toEqual(url);
}); });
}); });
}); });

View File

@@ -62,6 +62,7 @@ import {
} from "./builders"; } from "./builders";
import { b64Encode } from "../src/b64"; import { b64Encode } from "../src/b64";
import { BUrn } from "../src/burn"; import { BUrn } from "../src/burn";
import { URLBuilder } from "../src/url_builder";
describe("t", () => { describe("t", () => {
it("should be an md5 of the password and the salt", () => { it("should be an md5 of the password and the salt", () => {
@@ -688,7 +689,7 @@ describe("asTrack", () => {
}); });
describe("Subsonic", () => { describe("Subsonic", () => {
const url = "http://127.0.0.22:4567"; const url = new URLBuilder("http://127.0.0.22:4567/some-context-path");
const username = `user1-${uuid()}`; const username = `user1-${uuid()}`;
const password = `pass1-${uuid()}`; const password = `pass1-${uuid()}`;
const salt = "saltysalty"; const salt = "saltysalty";
@@ -756,7 +757,7 @@ describe("Subsonic", () => {
expect(parseToken(token.serviceToken)).toEqual({ username, password, type: PING_OK["subsonic-response"].type }) expect(parseToken(token.serviceToken)).toEqual({ username, password, type: PING_OK["subsonic-response"].type })
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/ping.view`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/ping.view' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -777,7 +778,7 @@ describe("Subsonic", () => {
expect(parseToken(token.serviceToken)).toEqual({ username, password, type }) expect(parseToken(token.serviceToken)).toEqual({ username, password, type })
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/ping.view`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/ping.view' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -802,11 +803,11 @@ describe("Subsonic", () => {
expect(parseToken(token.serviceToken)).toEqual({ username, password, type: "navidrome", bearer: navidromeToken }) expect(parseToken(token.serviceToken)).toEqual({ username, password, type: "navidrome", bearer: navidromeToken })
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/ping.view`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/ping.view' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.post).toHaveBeenCalledWith(`${url}/auth/login`, { expect(axios.post).toHaveBeenCalledWith(url.append({ pathname: '/auth/login' }).href(), {
username, username,
password, password,
}); });
@@ -848,7 +849,7 @@ describe("Subsonic", () => {
expect(parseToken(refreshedToken.serviceToken)).toEqual({ username, password, type }) expect(parseToken(refreshedToken.serviceToken)).toEqual({ username, password, type })
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/ping.view`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/ping.view' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -876,11 +877,11 @@ describe("Subsonic", () => {
expect(parseToken(refreshedToken.serviceToken)).toEqual({ username, password, type: "navidrome", bearer: navidromeToken }) expect(parseToken(refreshedToken.serviceToken)).toEqual({ username, password, type: "navidrome", bearer: navidromeToken })
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/ping.view`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/ping.view' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.post).toHaveBeenCalledWith(`${url}/auth/login`, { expect(axios.post).toHaveBeenCalledWith(url.append({ pathname: '/auth/login' }).href(), {
username, username,
password, password,
}); });
@@ -941,7 +942,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getGenres`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getGenres' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -968,7 +969,7 @@ describe("Subsonic", () => {
expect(result).toEqual([{ id: b64Encode("genre1"), name: "genre1" }]); expect(result).toEqual([{ id: b64Encode("genre1"), name: "genre1" }]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getGenres`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getGenres' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -1003,7 +1004,7 @@ describe("Subsonic", () => {
{ id: b64Encode("g4"), name: "g4" }, { id: b64Encode("g4"), name: "g4" },
]); ]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getGenres`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getGenres' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -1059,7 +1060,7 @@ describe("Subsonic", () => {
similarArtists: artist.similarArtists, similarArtists: artist.similarArtists,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1067,7 +1068,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1118,7 +1119,7 @@ describe("Subsonic", () => {
similarArtists: artist.similarArtists, similarArtists: artist.similarArtists,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1126,7 +1127,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1171,7 +1172,7 @@ describe("Subsonic", () => {
similarArtists: artist.similarArtists, similarArtists: artist.similarArtists,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1179,7 +1180,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1225,7 +1226,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1233,7 +1234,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1276,7 +1277,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1284,7 +1285,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1327,7 +1328,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1335,7 +1336,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1379,7 +1380,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1387,7 +1388,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1432,7 +1433,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1440,7 +1441,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1483,7 +1484,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1491,7 +1492,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1532,7 +1533,7 @@ describe("Subsonic", () => {
similarArtists: [], similarArtists: [],
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtist`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1540,7 +1541,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtistInfo2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtistInfo2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: artist.id, id: artist.id,
@@ -1661,7 +1662,7 @@ describe("Subsonic", () => {
total: 1, total: 1,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -1702,7 +1703,7 @@ describe("Subsonic", () => {
total: 4, total: 4,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -1730,7 +1731,7 @@ describe("Subsonic", () => {
expect(artists).toEqual({ results: expectedResults, total: 4 }); expect(artists).toEqual({ results: expectedResults, total: 4 });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -1786,12 +1787,12 @@ describe("Subsonic", () => {
total: 2, total: 2,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "byGenre", type: "byGenre",
@@ -1838,12 +1839,12 @@ describe("Subsonic", () => {
total: 3, total: 3,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "newest", type: "newest",
@@ -1889,12 +1890,12 @@ describe("Subsonic", () => {
total: 2, total: 2,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "recent", type: "recent",
@@ -1931,12 +1932,12 @@ describe("Subsonic", () => {
total: 1, total: 1,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "frequent", type: "frequent",
@@ -1973,12 +1974,12 @@ describe("Subsonic", () => {
total: 1, total: 1,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "highest", type: "highest",
@@ -2024,12 +2025,12 @@ describe("Subsonic", () => {
total: 1, total: 1,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "alphabeticalByArtist", type: "alphabeticalByArtist",
@@ -2074,12 +2075,12 @@ describe("Subsonic", () => {
total: 0, total: 0,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "alphabeticalByArtist", type: "alphabeticalByArtist",
@@ -2139,12 +2140,12 @@ describe("Subsonic", () => {
total: 6, total: 6,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "alphabeticalByArtist", type: "alphabeticalByArtist",
@@ -2190,12 +2191,12 @@ describe("Subsonic", () => {
total: 6, total: 6,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbumList2`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbumList2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
type: "alphabeticalByArtist", type: "alphabeticalByArtist",
@@ -2263,13 +2264,13 @@ describe("Subsonic", () => {
total: 4, total: 4,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2320,13 +2321,13 @@ describe("Subsonic", () => {
total: 4, total: 4,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2376,13 +2377,13 @@ describe("Subsonic", () => {
total: 4, total: 4,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2442,13 +2443,13 @@ describe("Subsonic", () => {
total: 5, total: 5,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2506,13 +2507,13 @@ describe("Subsonic", () => {
total: 5, total: 5,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2568,13 +2569,13 @@ describe("Subsonic", () => {
total: 5, total: 5,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getArtists`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getArtists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getAlbumList2`, url.append({ pathname: '/rest/getAlbumList2' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
@@ -2620,7 +2621,7 @@ describe("Subsonic", () => {
expect(result).toEqual(album); expect(result).toEqual(album);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -2698,7 +2699,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1, track2, track3, track4]); expect(result).toEqual([track1, track2, track3, track4]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -2745,7 +2746,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track]); expect(result).toEqual([track]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -2780,7 +2781,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -2831,7 +2832,7 @@ describe("Subsonic", () => {
rating: { love: true, stars: 4 }, rating: { love: true, stars: 4 },
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getSong`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getSong' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: track.id, id: track.id,
@@ -2839,7 +2840,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -2878,7 +2879,7 @@ describe("Subsonic", () => {
rating: { love: false, stars: 0 }, rating: { love: false, stars: 0 },
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getSong`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getSong' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: track.id, id: track.id,
@@ -2886,7 +2887,7 @@ describe("Subsonic", () => {
headers, headers,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getAlbum`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getAlbum' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: album.id, id: album.id,
@@ -3033,7 +3034,7 @@ describe("Subsonic", () => {
}); });
expect(result.stream).toEqual(stream); expect(result.stream).toEqual(stream);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/stream`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/stream' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: trackId, id: trackId,
@@ -3139,7 +3140,7 @@ describe("Subsonic", () => {
}); });
expect(result.stream).toEqual(stream); expect(result.stream).toEqual(stream);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/stream`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/stream' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: trackId, id: trackId,
@@ -3182,7 +3183,7 @@ describe("Subsonic", () => {
.then((it) => it.stream({ trackId, range: undefined })); .then((it) => it.stream({ trackId, range: undefined }));
expect(streamClientApplication).toHaveBeenCalledWith(track); expect(streamClientApplication).toHaveBeenCalledWith(track);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/stream`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/stream' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: trackId, id: trackId,
@@ -3224,7 +3225,7 @@ describe("Subsonic", () => {
.then((it) => it.stream({ trackId, range })); .then((it) => it.stream({ trackId, range }));
expect(streamClientApplication).toHaveBeenCalledWith(track); expect(streamClientApplication).toHaveBeenCalledWith(track);
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/stream`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/stream' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: trackId, id: trackId,
@@ -3267,7 +3268,7 @@ describe("Subsonic", () => {
data: streamResponse.data, data: streamResponse.data,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getCoverArt`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getCoverArt' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: coverArtId, id: coverArtId,
@@ -3303,7 +3304,7 @@ describe("Subsonic", () => {
data: streamResponse.data, data: streamResponse.data,
}); });
expect(axios.get).toHaveBeenCalledWith(`${url}/rest/getCoverArt`, { expect(axios.get).toHaveBeenCalledWith(url.append({ pathname: '/rest/getCoverArt' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
id: coverArtId, id: coverArtId,
@@ -3429,7 +3430,7 @@ describe("Subsonic", () => {
}); });
expect(axios.get).toHaveBeenCalledWith( expect(axios.get).toHaveBeenCalledWith(
`${url}/rest/getCoverArt`, url.append({ pathname: '/rest/getCoverArt' }).href(),
{ {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
@@ -3495,7 +3496,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/star`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/star' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: trackId, id: trackId,
@@ -3528,7 +3529,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/unstar`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/unstar' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: trackId, id: trackId,
@@ -3587,7 +3588,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/setRating`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/setRating' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: trackId, id: trackId,
@@ -3648,14 +3649,14 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/unstar`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/unstar' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: trackId, id: trackId,
}), }),
headers, headers,
}); });
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/setRating`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/setRating' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: trackId, id: trackId,
@@ -3715,7 +3716,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/scrobble`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/scrobble' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -3744,7 +3745,7 @@ describe("Subsonic", () => {
expect(result).toEqual(false); expect(result).toEqual(false);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/scrobble`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/scrobble' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -3770,7 +3771,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/scrobble`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/scrobble' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -3799,7 +3800,7 @@ describe("Subsonic", () => {
expect(result).toEqual(false); expect(result).toEqual(false);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/scrobble`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/scrobble' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -3827,7 +3828,7 @@ describe("Subsonic", () => {
expect(result).toEqual([artistToArtistSummary(artist1)]); expect(result).toEqual([artistToArtistSummary(artist1)]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 20, artistCount: 20,
@@ -3861,7 +3862,7 @@ describe("Subsonic", () => {
artistToArtistSummary(artist2), artistToArtistSummary(artist2),
]); ]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 20, artistCount: 20,
@@ -3887,7 +3888,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 20, artistCount: 20,
@@ -3923,7 +3924,7 @@ describe("Subsonic", () => {
expect(result).toEqual([albumToAlbumSummary(album)]); expect(result).toEqual([albumToAlbumSummary(album)]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -3973,7 +3974,7 @@ describe("Subsonic", () => {
albumToAlbumSummary(album2), albumToAlbumSummary(album2),
]); ]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -3999,7 +4000,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -4045,7 +4046,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track]); expect(result).toEqual([track]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -4117,7 +4118,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1, track2]); expect(result).toEqual([track1, track2]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -4143,7 +4144,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/search3`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/search3' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
artistCount: 0, artistCount: 0,
@@ -4174,7 +4175,7 @@ describe("Subsonic", () => {
expect(result).toEqual([playlist]); expect(result).toEqual([playlist]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylists`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getPlaylists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -4199,7 +4200,7 @@ describe("Subsonic", () => {
expect(result).toEqual(playlists); expect(result).toEqual(playlists);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylists`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getPlaylists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -4219,7 +4220,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylists`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getPlaylists' }).href(), {
params: asURLSearchParams(authParamsPlusJson), params: asURLSearchParams(authParamsPlusJson),
headers, headers,
}); });
@@ -4304,7 +4305,7 @@ describe("Subsonic", () => {
], ],
}); });
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getPlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -4331,7 +4332,7 @@ describe("Subsonic", () => {
expect(result).toEqual(playlist); expect(result).toEqual(playlist);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getPlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getPlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id: playlist.id, id: playlist.id,
@@ -4359,7 +4360,7 @@ describe("Subsonic", () => {
expect(result).toEqual({ id, name }); expect(result).toEqual({ id, name });
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/createPlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/createPlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
f: "json", f: "json",
@@ -4383,7 +4384,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/deletePlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/deletePlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
id, id,
@@ -4408,7 +4409,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/updatePlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/updatePlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
playlistId, playlistId,
@@ -4433,7 +4434,7 @@ describe("Subsonic", () => {
expect(result).toEqual(true); expect(result).toEqual(true);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/updatePlaylist`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/updatePlaylist' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParamsPlusJson, ...authParamsPlusJson,
playlistId, playlistId,
@@ -4480,7 +4481,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1]); expect(result).toEqual([track1]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getSimilarSongs2`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getSimilarSongs2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",
@@ -4550,7 +4551,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1, track2, track3]); expect(result).toEqual([track1, track2, track3]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getSimilarSongs2`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getSimilarSongs2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",
@@ -4577,7 +4578,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getSimilarSongs2`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getSimilarSongs2' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",
@@ -4644,7 +4645,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1]); expect(result).toEqual([track1]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getTopSongs`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getTopSongs' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",
@@ -4711,7 +4712,7 @@ describe("Subsonic", () => {
expect(result).toEqual([track1, track2, track3]); expect(result).toEqual([track1, track2, track3]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getTopSongs`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getTopSongs' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",
@@ -4751,7 +4752,7 @@ describe("Subsonic", () => {
expect(result).toEqual([]); expect(result).toEqual([]);
expect(mockGET).toHaveBeenCalledWith(`${url}/rest/getTopSongs`, { expect(mockGET).toHaveBeenCalledWith(url.append({ pathname: '/rest/getTopSongs' }).href(), {
params: asURLSearchParams({ params: asURLSearchParams({
...authParams, ...authParams,
f: "json", f: "json",