decouple HTTP tests from API usage

This commit is contained in:
Jimmy Zelinskie 2015-10-11 02:33:05 -04:00
parent 1764fa4a2d
commit 7cfa862f2c
3 changed files with 39 additions and 36 deletions

View file

@ -5,9 +5,7 @@
package http package http
import ( import (
"net/http"
"net/http/httptest" "net/http/httptest"
"net/url"
"reflect" "reflect"
"strconv" "strconv"
"testing" "testing"
@ -20,7 +18,7 @@ import (
) )
func TestPublicAnnounce(t *testing.T) { func TestPublicAnnounce(t *testing.T) {
srv, err := setupTracker(&config.DefaultConfig) srv, err := setupTracker(nil, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -49,24 +47,25 @@ func TestPublicAnnounce(t *testing.T) {
} }
func TestTorrentPurging(t *testing.T) { func TestTorrentPurging(t *testing.T) {
cfg := config.DefaultConfig tkr, err := tracker.New(&config.DefaultConfig)
srv, err := setupTracker(&cfg) if err != nil {
t.Fatalf("failed to create new tracker instance: %s", err)
}
srv, err := setupTracker(nil, tkr)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer srv.Close() defer srv.Close()
torrentAPIPath := srv.URL + "/torrents/" + url.QueryEscape(infoHash)
// Add one seeder. // Add one seeder.
peer := makePeerParams("peer1", true) peer := makePeerParams("peer1", true)
announce(peer, srv) announce(peer, srv)
_, status, err := fetchPath(torrentAPIPath) // Make sure the torrent was created.
_, err = tkr.FindTorrent(infoHash)
if err != nil { if err != nil {
t.Fatal(err) t.Fatalf("expected torrent to exist after announce: %s", err)
} else if status != http.StatusOK {
t.Fatalf("expected torrent to exist (got %s)", http.StatusText(status))
} }
// Remove seeder. // Remove seeder.
@ -74,11 +73,9 @@ func TestTorrentPurging(t *testing.T) {
peer["event"] = "stopped" peer["event"] = "stopped"
announce(peer, srv) announce(peer, srv)
_, status, err = fetchPath(torrentAPIPath) _, err = tkr.FindTorrent(infoHash)
if err != nil { if err != models.ErrTorrentDNE {
t.Fatal(err) t.Fatalf("expected torrent to have been purged: %s", err)
} else if status != http.StatusNotFound {
t.Fatalf("expected torrent to have been purged (got %s)", http.StatusText(status))
} }
} }
@ -87,23 +84,25 @@ func TestStalePeerPurging(t *testing.T) {
cfg.MinAnnounce = config.Duration{10 * time.Millisecond} cfg.MinAnnounce = config.Duration{10 * time.Millisecond}
cfg.ReapInterval = config.Duration{10 * time.Millisecond} cfg.ReapInterval = config.Duration{10 * time.Millisecond}
srv, err := setupTracker(&cfg) tkr, err := tracker.New(&cfg)
if err != nil {
t.Fatalf("failed to create new tracker instance: %s", err)
}
srv, err := setupTracker(&cfg, tkr)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer srv.Close() defer srv.Close()
torrentAPIPath := srv.URL + "/torrents/" + url.QueryEscape(infoHash)
// Add one seeder. // Add one seeder.
peer1 := makePeerParams("peer1", true) peer1 := makePeerParams("peer1", true)
announce(peer1, srv) announce(peer1, srv)
_, status, err := fetchPath(torrentAPIPath) // Make sure the torrent was created.
_, err = tkr.FindTorrent(infoHash)
if err != nil { if err != nil {
t.Fatal(err) t.Fatalf("expected torrent to exist after announce: %s", err)
} else if status != http.StatusOK {
t.Fatalf("expected torrent to exist (got %s)", http.StatusText(status))
} }
// Add a leecher. // Add a leecher.
@ -115,11 +114,9 @@ func TestStalePeerPurging(t *testing.T) {
// Let them both expire. // Let them both expire.
time.Sleep(30 * time.Millisecond) time.Sleep(30 * time.Millisecond)
_, status, err = fetchPath(torrentAPIPath) _, err = tkr.FindTorrent(infoHash)
if err != nil { if err != models.ErrTorrentDNE {
t.Fatal(err) t.Fatalf("expected torrent to have been purged: %s", err)
} else if status != http.StatusNotFound {
t.Fatalf("expected torrent to have been purged (got %s)", http.StatusText(status))
} }
} }
@ -170,7 +167,7 @@ func TestPreferredSubnet(t *testing.T) {
cfg.PreferredIPv6Subnet = 16 cfg.PreferredIPv6Subnet = 16
cfg.DualStackedPeers = false cfg.DualStackedPeers = false
srv, err := setupTracker(&cfg) srv, err := setupTracker(&cfg, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -235,7 +232,7 @@ func TestPreferredSubnet(t *testing.T) {
} }
func TestCompactAnnounce(t *testing.T) { func TestCompactAnnounce(t *testing.T) {
srv, err := setupTracker(&config.DefaultConfig) srv, err := setupTracker(nil, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View file

@ -27,11 +27,18 @@ func init() {
stats.DefaultStats = stats.New(config.StatsConfig{}) stats.DefaultStats = stats.New(config.StatsConfig{})
} }
func setupTracker(cfg *config.Config) (*httptest.Server, error) { func setupTracker(cfg *config.Config, tkr *tracker.Tracker) (*httptest.Server, error) {
tkr, err := tracker.New(cfg) if cfg == nil {
cfg = &config.DefaultConfig
}
if tkr == nil {
var err error
tkr, err = tracker.New(cfg)
if err != nil { if err != nil {
return nil, err return nil, err
} }
}
return createServer(tkr, cfg) return createServer(tkr, cfg)
} }

View file

@ -13,11 +13,10 @@ import (
"testing" "testing"
"github.com/chihaya/bencode" "github.com/chihaya/bencode"
"github.com/chihaya/chihaya/config"
) )
func TestPublicScrape(t *testing.T) { func TestPublicScrape(t *testing.T) {
srv, err := setupTracker(&config.DefaultConfig) srv, err := setupTracker(nil, nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }