github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/api/server/repositoriesList_test.go (about) 1 package server 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "os" 7 "path/filepath" 8 "strings" 9 10 "github.com/hoffie/larasync/api/common" 11 12 . "gopkg.in/check.v1" 13 ) 14 15 type RepoListTests struct { 16 BaseTests 17 req *http.Request 18 } 19 20 var _ = Suite(&RepoListTests{ 21 BaseTests: newBaseTest(), 22 }) 23 24 func (t *RepoListTests) SetUpTest(c *C) { 25 req, err := http.NewRequest("GET", "http://example.org/repositories", nil) 26 c.Assert(err, IsNil) 27 t.req = req 28 t.createRepoManager(c) 29 t.createServer(c) 30 t.createRepository(c) 31 } 32 33 func (t *RepoListTests) getResponse(req *http.Request) *httptest.ResponseRecorder { 34 rw := httptest.NewRecorder() 35 t.server.router.ServeHTTP(rw, req) 36 return rw 37 } 38 39 func (t *RepoListTests) TestRepoListUnauthorized(c *C) { 40 resp := t.getResponse(t.req) 41 c.Assert(resp.Code, Equals, http.StatusUnauthorized) 42 } 43 44 func (t *RepoListTests) TestRepoListAdmin(c *C) { 45 common.SignWithPassphrase(t.req, adminSecret) 46 resp := t.getResponse(t.req) 47 c.Assert(resp.Code, Equals, http.StatusOK) 48 } 49 50 func (t *RepoListTests) TestRepoListContentType(c *C) { 51 common.SignWithPassphrase(t.req, adminSecret) 52 resp := t.getResponse(t.req) 53 54 contentType := resp.Header().Get("Content-Type") 55 c.Assert( 56 strings.HasPrefix( 57 contentType, 58 "application/json"), 59 Equals, 60 true) 61 } 62 63 func (t *RepoListTests) TestRepoListOutput(c *C) { 64 common.SignWithPassphrase(t.req, adminSecret) 65 resp := t.getResponse(t.req) 66 //FIXME test repo list output 67 c.Assert(resp.Code, Equals, 200) 68 c.Assert(resp.Body.String(), Equals, "[]") 69 c.Assert(resp.Body.Len(), Not(Equals), 0) 70 } 71 72 func (t *RepoListTests) TestRepoListOutputExcludeFiles(c *C) { 73 f, err := os.Create(filepath.Join(t.repos, "somefile")) 74 c.Assert(err, IsNil) 75 f.Close() 76 common.SignWithPassphrase(t.req, adminSecret) 77 resp := t.getResponse(t.req) 78 c.Assert(resp.Code, Equals, 200) 79 c.Assert(resp.Body.String(), Equals, "[]") 80 c.Assert(resp.Body.Len(), Not(Equals), 0) 81 } 82 83 func (t *RepoListTests) TestRepoListMangled(c *C) { 84 common.SignWithPassphrase(t.req, adminSecret) 85 t.req.Header.Set("Mangled", "Yes") 86 resp := t.getResponse(t.req) 87 c.Assert(resp.Code, Equals, http.StatusUnauthorized) 88 }