func TestAddEvents(t *testing.T) { r := createRouter() // It should return 400 if json is not set req := testRequest(r, "POST", "/library/events", nil) req.Header.Set("Authorization", "evtest1") assert.Equal(t, 400, req.send().Code) // It should return 400 if the json is bad req.PostForm = url.Values{} req.PostForm.Set("json", "real_bad_json") assert.Equal(t, 400, req.send().Code) // It should return 200 when proper json is sent req.PostForm.Set("json", testJSON([]Event{ Event{ Type: 30, EpisodeID: 10, PositionTS: 481, ClientTS: 11, ConcurrentOrder: 0, ClientName: "Castcloud", ClientDescription: "oink", }, })) assert.Equal(t, 200, req.send().Code) // There should now be 2 events req.Method = "GET" res := checkEvents(t, req) assert.Len(t, res.Events, 2) }
func TestAddCast(t *testing.T) { r := createRouter() cast := &Cast{} // It should return an existing cast req := testRequest(r, "POST", "/library/casts", nil) req.Header.Set("Authorization", "token") req.PostForm = url.Values{} req.PostForm.Set("feedurl", "test.go") res := req.send() assert.Equal(t, 200, res.Code) json.Unmarshal(res.Body.Bytes(), cast) assert.Equal(t, "test.go", cast.URL) assert.Equal(t, "test", cast.Name) // There should still be only 2 subscriptions user := store.GetUser("test") assert.Len(t, user.Subscriptions, 2) // It should return 500 when the crawling fails req.PostForm.Set("feedurl", "dat_url") res = req.send() assert.Equal(t, 500, res.Code) // There should still be only 2 subscriptions user = store.GetUser("test") assert.Len(t, user.Subscriptions, 2) // It should return a new cast req.PostForm.Set("feedurl", testRSS) res = req.send() assert.Equal(t, 200, res.Code) json.Unmarshal(res.Body.Bytes(), cast) assert.Equal(t, testRSS, cast.URL) assert.Equal(t, "BSD Now HD", cast.Name) assert.NotNil(t, cast.Feed) // There should now be 3 subscriptions user = store.GetUser("test") assert.Len(t, user.Subscriptions, 3) // The new cast should be in the store cast = store.GetCastByURL(testRSS) assert.NotNil(t, cast) assert.Equal(t, "BSD Now HD", cast.Name) assert.NotNil(t, cast.Feed) }
func TestGetEvents(t *testing.T) { r := createRouter() // It should return 400 if since is bad req := testRequest(r, "GET", "/library/events?since=yesterday", nil) req.Header.Set("Authorization", "evtest1") assert.Equal(t, 400, req.send().Code) // It should return 200 with a timestamp and a list of events req.URL, _ = url.Parse("/library/events?since=5") res := checkEvents(t, req) assert.Len(t, res.Events, 1) // It should exclude events sent from this clients UUID when // exclude_self is true req.URL, _ = url.Parse("/library/events?since=5&exclude_self=true") res = checkEvents(t, req) assert.Len(t, res.Events, 0) }
func TestEvents(t *testing.T) { err := store.AddEvents([]Event{ Event{ Type: 10, EpisodeID: 1, PositionTS: 134, ClientTS: 100, ConcurrentOrder: 0, ClientName: "Castcloud", ClientDescription: "oink", }, Event{ Type: 10, EpisodeID: 1, PositionTS: 112, ClientTS: 50, ConcurrentOrder: 0, ClientName: "Castcloud", ClientDescription: "oink", }, }, 2, "evuuid1") assert.Nil(t, err) events := store.GetEvents(2, 100, "") assert.Len(t, events, 0) events = store.GetEvents(2, 99, "") assert.Len(t, events, 1) assert.Equal(t, 10, events[0].Type) assert.Equal(t, 134, events[0].PositionTS) events = store.GetEvents(2, 99, "evuuid1") assert.Len(t, events, 0) events = store.GetEvents(2, 99, "nope") assert.Len(t, events, 1) events = store.GetEvents(2, 25, "") assert.Len(t, events, 2) assert.Equal(t, 112, events[0].PositionTS) }
func TestGetNewEpisodes(t *testing.T) { r := createRouter() req := testRequest(r, "GET", "/library/newepisodes?since=32503679999", nil) req.Header.Set("Authorization", "token") res := checkNewEpisodes(t, req) assert.Len(t, res.Episodes, 2) assert.Equal(t, Episode{ ID: 2, CastID: 69, }, res.Episodes[0]) assert.Equal(t, Episode{ ID: 3, CastID: 69, }, res.Episodes[1]) req.URL, _ = url.Parse("/library/newepisodes?since=32503680000") res = checkNewEpisodes(t, req) assert.Len(t, res.Episodes, 1) assert.Equal(t, Episode{ ID: 3, CastID: 69, }, res.Episodes[0]) req.URL, _ = url.Parse("/library/newepisodes?since=32503680001") res = checkNewEpisodes(t, req) assert.Len(t, res.Episodes, 0) req.URL, _ = url.Parse("/library/newepisodes") res = checkNewEpisodes(t, req) assert.True(t, len(res.Episodes) > 2) req.URL, _ = url.Parse("/library/newepisodes?since=what") resp := req.send() assert.Equal(t, 400, resp.Code) }
func TestCreateToken(t *testing.T) { token, err := createToken(32) assert.Nil(t, err) assert.Len(t, token, 64) }