From b476cf9cbf24ebf2f84903eff3207f29343533be Mon Sep 17 00:00:00 2001 From: Marcus Crane Date: Sun, 23 Jul 2023 19:03:16 +1200 Subject: [PATCH] Add more Plex tests Signed-off-by: Marcus Crane --- fixtures/dog.jpg | Bin 0 -> 79366 bytes jobs/plex_test.go | 425 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 425 insertions(+) create mode 100644 fixtures/dog.jpg create mode 100644 jobs/plex_test.go diff --git a/fixtures/dog.jpg b/fixtures/dog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d99cdf49a36eb8639713aa794c413e2d8ddc899f GIT binary patch literal 79366 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%0DD_58va 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 N zG(sd)?sa#P)Z0j^BU-FXXb%G6+rKJusTi>(x0!yhE+Cx)#FgL);`JLZA~zm2!^ko` zmdz-TB(sZv{Cy^MRd~>qAl1nq%}-;K7Q%@|i#gh7o)5L@M=2^r8jcbE4+=la9g83r z!#%ykacnrr8#2Vq0BGt%h5NP`2xCdqx{O9B$dI@oD>|trhuE5R8<2MJ!W-i*AjYAP z+uNf^>|=sz+OH6##~}?)J$Tepe2*5+CDIb!*h?(6P6*0Lq7ltx*r-2bGPxW708B>c zOm1T3c`le7QsxCjnC<)Y6b?#`KO3)J)!!4jOt&Sy8o^+i&Ks0;xsJRerxh}(Jff7b z96=7$puorld#8JwS)p}2PR+@y#-#~*54A#Sd4Y^adkA2U4XJcdny58B9t*%|UO~8kGfn9}a z0Qd3Rrdb0{&$FX)EA=^$s3N>6O4G-#CEX2}g*0H@KF$&^A-b$XoW8niVAyZi5uw(b<3M(Z< zv~QgO`|(nQw;?1@e#t)-clv%pxB?1$Y*3zjfnn2)dXJu25XMSZD9nBOmC02WH)v(G zbsU8#cOdns@X1pfR&^(c9RaC50jZ`*4VdUkgYc4mAbL=HcEM{-1Q^K{lN!gC{>rvBuD@w%B0tYqdX-%;uX=M?23$UdallK#X z)|F$pr9j6+It~Bt8Z7asc7$Rud zh@di|^ve}B;Av0cg4V)QsCjl1a6K!>bhlDvjDc4_XrS9|{r&QMK(m(MAav_JN#s

FlQeSqK%6$hTi!LRaKG*rIt5D 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 MGOkM)lK%kz*^ND!UH||9 literal 0 HcmV?d00001 diff --git a/jobs/plex_test.go b/jobs/plex_test.go new file mode 100644 index 0000000..ce699f5 --- /dev/null +++ b/jobs/plex_test.go @@ -0,0 +1,425 @@ +package jobs + +import ( + "bytes" + "net/http" + "os" + "testing" + + "github.com/DATA-DOG/go-sqlmock" + "github.com/h2non/gock" + "github.com/jmoiron/sqlx" + "github.com/marcus-crane/gunslinger/events" + "github.com/marcus-crane/gunslinger/models" + "github.com/stretchr/testify/assert" +) + +func TestGetCurrentlyPlayingPlex_BadStatusCode(t *testing.T) { + expected := models.MediaItem{} + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(500) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_BadBody(t *testing.T) { + expected := models.MediaItem{} + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_EmptyBody(t *testing.T) { + expected := models.MediaItem{} + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(map[string]string{}) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_NoPlayingItem(t *testing.T) { + expected := models.MediaItem{ + IsActive: false, + Source: "plex", + } + + events.Init() + + CurrentPlaybackItem.IsActive = true + CurrentPlaybackItem.Source = "plex" + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + resp := models.PlexResponse{ + MediaContainer: models.MediaContainer{ + Size: 0, + }, + } + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(resp) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_PlayingItemClip(t *testing.T) { + expected := models.MediaItem{ + IsActive: false, + Source: "plex", + } + + events.Init() + + CurrentPlaybackItem.IsActive = false + CurrentPlaybackItem.Source = "plex" + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + resp := models.PlexResponse{ + MediaContainer: models.MediaContainer{ + Size: 1, + Metadata: []models.Metadata{ + { + Type: "clip", + Player: models.Player{ + State: "playing", + }, + }, + }, + }, + } + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(resp) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_PlayingItemEpisode(t *testing.T) { + expected := models.MediaItem{ + Title: "02x08 The Mistake", + Subtitle: "House", + Category: "episode", + Elapsed: 1000, + Duration: 2640888, + IsActive: true, + Source: "plex", + Image: "/static/cover.e06f49aa-27d0-060d-6202-5652179aff16.jpeg", + DominantColours: models.SerializableColours{ + "#514e29", + "#d9d2c4", + "#a59863", + "#93653f", + "#6d8b43", + "#6dabdf", + }, + } + + events.Init() + + CurrentPlaybackItem.IsActive = false + CurrentPlaybackItem.Source = "plex" + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + resp := models.PlexResponse{ + MediaContainer: models.MediaContainer{ + Size: 1, + Metadata: []models.Metadata{ + { + ParentIndex: 2, + Index: 8, + Title: "The Mistake", + GrandparentTitle: "House", + Type: "episode", + Duration: 2640888, + ViewOffset: 1000, + Thumb: "/images/thumb.jpg", + Player: models.Player{ + State: "playing", + }, + }, + }, + }, + } + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(resp) + + image, err := os.ReadFile("../fixtures/dog.jpg") + if err != nil { + panic("Failed to load in fixture") + } + + gock.New(buildPlexURL("/images/thumb.jpg")). + Get("/"). + Reply(200). + Body(bytes.NewReader(image)) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_PlayingItemMovie(t *testing.T) { + expected := models.MediaItem{ + Title: "Heat", + Subtitle: "Michael Mann", + Category: "movie", + Elapsed: 1000, + Duration: 2640888, + IsActive: true, + Source: "plex", + Image: "/static/cover.e06f49aa-27d0-060d-6202-5652179aff16.jpeg", + DominantColours: models.SerializableColours{ + "#514e29", + "#d9d2c4", + "#a59863", + "#93653f", + "#6d8b43", + "#6dabdf", + }, + } + + events.Init() + + CurrentPlaybackItem.IsActive = false + CurrentPlaybackItem.Source = "plex" + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + resp := models.PlexResponse{ + MediaContainer: models.MediaContainer{ + Size: 1, + Metadata: []models.Metadata{ + { + Title: "Heat", + GrandparentTitle: "Michael Mann", + Type: "movie", + Duration: 2640888, + ViewOffset: 1000, + Thumb: "/images/thumb.jpg", + Player: models.Player{ + State: "playing", + }, + Director: []models.Director{ + { + Name: "Michael Mann", + }, + }, + }, + }, + }, + } + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(resp) + + image, err := os.ReadFile("../fixtures/dog.jpg") + if err != nil { + panic("Failed to load in fixture") + } + + gock.New(buildPlexURL("/images/thumb.jpg")). + Get("/"). + Reply(200). + Body(bytes.NewReader(image)) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +} + +func TestGetCurrentlyPlayingPlex_PlayingItemTrack(t *testing.T) { + expected := models.MediaItem{ + Title: "DANGANRONPA SUPER MIX", + Subtitle: "高田雅史", + Category: "track", + Elapsed: 1000, + Duration: 2640888, + IsActive: true, + Source: "plex", + Image: "/static/cover.e06f49aa-27d0-060d-6202-5652179aff16.jpeg", + DominantColours: models.SerializableColours{ + "#514e29", + "#d9d2c4", + "#a59863", + "#93653f", + "#6d8b43", + "#6dabdf", + }, + } + + events.Init() + + CurrentPlaybackItem.IsActive = false + CurrentPlaybackItem.Source = "plex" + + t.Setenv("PLEX_URL", "http://example.com") + t.Setenv("PLEX_TOKEN", "123") + + defer gock.Off() + db, _, err := sqlmock.New() + if err != nil { + t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) + } + defer db.Close() + + sqlxDB := sqlx.NewDb(db, "sqlmock") + + resp := models.PlexResponse{ + MediaContainer: models.MediaContainer{ + Size: 1, + Metadata: []models.Metadata{ + { + Title: "DANGANRONPA SUPER MIX", + GrandparentTitle: "高田雅史", + Type: "track", + Duration: 2640888, + ViewOffset: 1000, + ParentThumb: "/images/thumb.jpg", + Player: models.Player{ + State: "playing", + }, + }, + }, + }, + } + + gock.New(buildPlexURL(plexSessionEndpoint)). + Get("/"). + Reply(200). + JSON(resp) + + image, err := os.ReadFile("../fixtures/dog.jpg") + if err != nil { + panic("Failed to load in fixture") + } + + gock.New(buildPlexURL("/images/thumb.jpg")). + Get("/"). + Reply(200). + Body(bytes.NewReader(image)) + + client := http.Client{} + + GetCurrentlyPlayingPlex(sqlxDB, client) + + assert.Equal(t, expected, CurrentPlaybackItem) +}