Files
plex-api-spec/tests/paths/users/post-sign-in.spec.ts
JasonLandbridge d902880604 format project
2024-09-04 11:24:16 +02:00

546 lines
15 KiB
TypeScript

import { validateResponseSpec } from "../../utils/"
import { describe, expect, it } from "vitest"
describe("POST /users/signin", () => {
it("should validate the 201 response when the API spec is valid", () => {
const response = {
id: 62735028,
uuid: "b9h6f3c8k1",
username: "ZjFvKLCb",
title: "ZjFvKLCb",
email: "c9eMdShR@example.com",
friendlyName: "",
locale: null,
confirmed: false,
joinedAt: 1552593531,
emailOnlyAuth: false,
hasPassword: true,
protected: false,
thumb: "https://plex.tv/users/b9h6f3c8k1/avatar?c=1724402119",
authToken: "jx9nTbVbHk1gM",
mailingListStatus: "unsubscribed",
mailingListActive: false,
scrobbleTypes: "",
country: "ES",
subscription: {
active: false,
subscribedAt: "2019-03-16T15:20:12Z",
status: "Inactive",
paymentService: null,
plan: null,
features: [
"guided-upgrade",
"increase-password-complexity",
"upgrade-3ds2",
"ad-countdown-timer",
"adaptive_bitrate",
"amazon-loop-debug",
"Android - Dolby Vision",
"Android - PiP",
"avod-ad-analysis",
"avod-new-media",
"blacklist_get_signin",
"CU Sunset",
"client-radio-stations",
"cloudflare-turnstile-required",
"comments_and_replies_push_notifications",
"friend_request_push_notifications",
"community_access_plex_tv",
"companions_sonos",
"custom-home-removal",
"disable_home_user_friendships",
"disable_sharing_friendships",
"drm_support",
"le_isrg_root_x1",
"federated-auth",
"home",
"HRK_enable_EUR",
"ios14-privacy-banner",
"iterable-notification-tokens",
"keep-payment-method",
"kevin-bacon",
"korea-consent",
"lets_encrypt",
"lightning-dvr-pivot",
"livetv",
"live-tv-support-incomplete-segments",
"tuner-sharing",
"metadata_search",
"vod_cloudflare",
"new_plex_pass_prices",
"news-provider-sunset-modal",
"photos-favorites",
"photos-metadata-edition",
"pms_health",
"rate-limit-client-token",
"shared_server_notification",
"shared_source_notification",
"scrobbling-service-plex-tv",
"collections",
"radio",
"exclude restrictions",
"signin_with_apple",
"spring_serve_ad_provider",
"transcoder_cache",
"TREBLE-show-features",
"two-factor-authentication",
"unsupportedtuners",
"vod-schema",
"watch-together-invite",
"web_server_dashboard"
]
},
subscriptionDescription: null,
restricted: false,
anonymous: false,
home: false,
guest: false,
homeSize: 1,
homeAdmin: false,
maxHomeSize: 15,
rememberExpiresAt: 1725611719,
profile: {
autoSelectAudio: true,
defaultAudioLanguage: "ja",
defaultSubtitleLanguage: "en",
autoSelectSubtitle: 1,
defaultSubtitleAccessibility: 0,
defaultSubtitleForced: 0,
watchedIndicator: 1,
mediaReviewsVisibility: 0
},
entitlements: [],
subscriptions: [],
pastSubscriptions: [
{
id: null,
mode: null,
renewsAt: null,
endsAt: 1556281940,
billing: {
paymentMethodId: null,
internalPaymentMethod: {}
},
canceled: false,
gracePeriod: false,
onHold: false,
canReactivate: false,
canUpgrade: false,
canDowngrade: false,
canConvert: false,
type: "plexpass",
transfer: null,
state: "ended"
}
],
trials: [],
services: [
{
identifier: "epg",
endpoint: "https://epg.provider.plex.tv",
token: "d2h7zUjKgT5oLwQ3cQ6d",
secret: null,
status: "online"
},
{
identifier: "epg-staging",
endpoint: "https://epg-staging.provider.plex.tv",
token: "r7m1nVfPhU4eRwM7eR5a",
secret: null,
status: "online"
},
{
identifier: "epg-dev",
endpoint: "https://epg-dev.provider.plex.tv",
token: "z4w2sLxPbJ3iRkY2hN8f",
secret: null,
status: "online"
},
{
identifier: "eyeq",
endpoint: "https://c4412416.ipg.web.cddbp.net/webapi/xml/1.0/",
token: "g1v9kWxHdT3jNiY6dF4b",
secret: null,
status: "online"
},
{
identifier: "eyeq-channel-icons",
endpoint: "http://akamai-b.cdn.cddbp.net/cds/2.0/image",
token: null,
secret: null,
status: "online"
},
{
identifier: "graph-dev",
endpoint: "https://community-dev.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "graph-staging",
endpoint: "https://community-staging.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community-dev",
endpoint: "https://community-dev.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community-staging",
endpoint: "https://community-staging.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community",
endpoint: "https://community.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "metadata",
endpoint: "https://metadata.provider.plex.tv",
token: "h5z3rQxLhJ2lRyB4gN7v",
secret: null,
status: "online"
},
{
identifier: "scrobbling",
endpoint: "https://scrobbles.plex.tv",
token: "s6y1wTxFpL7jMxC3nR8e",
secret: null,
status: "online"
},
{
identifier: "metadata-dev",
endpoint: "https://metadata-dev.provider.plex.tv",
token: "j2h4tWmNpO3lRyD7vF9x",
secret: null,
status: "online"
},
{
identifier: "metadata-provider",
endpoint: "https://mpm.plex.tv/",
token: null,
secret: null,
status: "online"
},
{
identifier: "tmsapi",
endpoint: "https://tmsapi.plex.tv/v1.1/",
token: "p7c8xVhLpM5oTzQ1wR2b",
secret: null,
status: "online"
},
{
identifier: "subtitles-search",
endpoint: "https://metadata.provider.plex.tv/library/streams/matches",
token: "t8f3kWqNhP6uLyX4mC2y",
secret: null,
status: "online"
},
{
identifier: "acoustid",
endpoint: "https://acoustid.plex.tv/",
token: "l5n7rQxHpV2oRyD9gF6b",
secret: null,
status: "online"
},
{
identifier: "lyricfind",
endpoint: "https://lyricfind.plex.tv/",
token: "m3y4tUjKlN8fMxC7oQ2b",
secret: "a1d5vWxHpQ6oLyT4gR3c",
status: "online"
},
{
identifier: "lyricfind-search",
endpoint: "https://lyricfind.plex.tv/",
token: "q6c8wTxFpO9kLrZ2hV5b",
secret: null,
status: "online"
},
{
identifier: "tvdb",
endpoint: "https://api4.thetvdb.com/",
token: "r4h7zUjMgL1fTzN3yP5x",
secret: null,
status: "online"
}
],
adsConsent: null,
adsConsentSetAt: null,
adsConsentReminderAt: null,
experimentalFeatures: false,
twoFactorEnabled: false,
backupCodesCreated: false,
attributionPartner: null
}
validateResponseSpec("/users/signin", "post", 201, response)
})
it("should validate the 201 response when the API spec is valid", () => {
const response = {
id: 475829302,
uuid: "a1b2c3d4e5f67890",
username: "user12345",
title: "user12345",
email: "user12345@example.com",
friendlyName: "",
locale: null,
confirmed: false,
joinedAt: 1633376532,
emailOnlyAuth: false,
hasPassword: true,
protected: false,
thumb: "https://plex.tv/users/a1b2c3d4e5f67890/avatar?c=1234567890",
authToken: "gHjKlMnOpQrStUvWxYz",
mailingListStatus: "active",
mailingListActive: true,
scrobbleTypes: "",
country: "IT",
subscription: {
active: false,
subscribedAt: null,
status: "Inactive",
paymentService: null,
plan: null,
features: [
"guided-upgrade",
"increase-password-complexity",
"upgrade-3ds2",
"ad-countdown-timer",
"adaptive_bitrate",
"amazon-loop-debug",
"avod-ad-analysis",
"avod-new-media",
"blacklist_get_signin",
"CU Sunset",
"client-radio-stations",
"cloudflare-turnstile-required",
"comments_and_replies_push_notifications",
"friend_request_push_notifications",
"community_access_plex_tv",
"companions_sonos",
"custom-home-removal",
"disable_home_user_friendships",
"disable_sharing_friendships",
"drm_support",
"le_isrg_root_x1",
"federated-auth",
"home",
"HRK_enable_EUR",
"ios14-privacy-banner",
"iterable-notification-tokens",
"keep-payment-method",
"kevin-bacon",
"korea-consent",
"lets_encrypt",
"lightning-dvr-pivot",
"livetv",
"live-tv-support-incomplete-segments",
"tuner-sharing",
"metadata_search",
"vod_cloudflare",
"new_plex_pass_prices",
"news-provider-sunset-modal",
"photos-favorites",
"photos-metadata-edition",
"pms_health",
"rate-limit-client-token",
"shared_server_notification",
"shared_source_notification",
"scrobbling-service-plex-tv",
"collections",
"radio",
"exclude restrictions",
"signin_with_apple",
"spring_serve_ad_provider",
"transcoder_cache",
"TREBLE-show-features",
"two-factor-authentication",
"unsupportedtuners",
"vod-schema",
"watch-together-invite",
"web_server_dashboard"
]
},
subscriptionDescription: null,
restricted: false,
anonymous: null,
home: false,
guest: false,
homeSize: 1,
homeAdmin: false,
maxHomeSize: 15,
rememberExpiresAt: 1725684008,
profile: {
autoSelectAudio: true,
defaultAudioLanguage: null,
defaultSubtitleLanguage: null,
autoSelectSubtitle: 1,
defaultSubtitleAccessibility: 0,
defaultSubtitleForced: 0,
watchedIndicator: 1,
mediaReviewsVisibility: 0
},
entitlements: [],
subscriptions: [],
pastSubscriptions: [],
trials: [],
services: [
{
identifier: "epg",
endpoint: "https://epg.provider.plex.tv",
token: "A1B2C3D4E5F6G7H8I9J0",
secret: null,
status: "online"
},
{
identifier: "epg-staging",
endpoint: "https://epg-staging.provider.plex.tv",
token: "J9I8H7G6F5E4D3C2B1A0",
secret: null,
status: "online"
},
{
identifier: "epg-dev",
endpoint: "https://epg-dev.provider.plex.tv",
token: "0J9I8H7G6F5E4D3C2B1A",
secret: null,
status: "online"
},
{
identifier: "eyeq",
endpoint: "https://c4412416.ipg.web.cddbp.net/webapi/xml/1.0/",
token: "Z1X2C3V4B5N6M7Q8W9R0",
secret: null,
status: "online"
},
{
identifier: "eyeq-channel-icons",
endpoint: "http://akamai-b.cdn.cddbp.net/cds/2.0/image",
token: null,
secret: null,
status: "online"
},
{
identifier: "graph-dev",
endpoint: "https://community-dev.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "graph-staging",
endpoint: "https://community-staging.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community-dev",
endpoint: "https://community-dev.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community-staging",
endpoint: "https://community-staging.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "community",
endpoint: "https://community.plex.tv",
token: null,
secret: null,
status: "online"
},
{
identifier: "metadata",
endpoint: "https://metadata.provider.plex.tv",
token: "K1L2M3N4O5P6Q7R8S9T0",
secret: null,
status: "online"
},
{
identifier: "metadata-dev",
endpoint: "https://metadata-dev.provider.plex.tv",
token: "T0S9R8Q7P6O5N4M3L2K1",
secret: null,
status: "online"
},
{
identifier: "metadata-provider",
endpoint: "https://mpm.plex.tv/",
token: null,
secret: null,
status: "online"
},
{
identifier: "tmsapi",
endpoint: "https://tmsapi.plex.tv/v1.1/",
token: "F1G2H3J4K5L6M7N8O9P0",
secret: null,
status: "online"
},
{
identifier: "subtitles-search",
endpoint: "https://metadata.provider.plex.tv/library/streams/matches",
token: "Q1W2E3R4T5Y6U7I8O9P0",
secret: null,
status: "online"
},
{
identifier: "acoustid",
endpoint: "https://acoustid.plex.tv/",
token: "1A2S3D4F5G6H7J8K9L0",
secret: null,
status: "online"
},
{
identifier: "lyricfind",
endpoint: "https://lyricfind.plex.tv/",
token: "Z9X8C7V6B5N4M3Q2W1E0",
secret: "X1C2V3B4N5M6Q7W8E9R0",
status: "online"
},
{
identifier: "lyricfind-search",
endpoint: "https://lyricfind.plex.tv/",
token: "F6D5S4A3J2K1L8P7O9M0",
secret: null,
status: "online"
},
{
identifier: "tvdb",
endpoint: "https://api4.thetvdb.com/",
token: "L1K2J3H4G5F6D7S8A9P0",
secret: null,
status: "online"
}
],
adsConsent: null,
adsConsentSetAt: null,
adsConsentReminderAt: null,
experimentalFeatures: false,
twoFactorEnabled: false,
backupCodesCreated: false,
attributionPartner: null
}
validateResponseSpec("/users/signin", "post", 201, response)
})
})