Skip to content
This repository has been archived by the owner on Apr 26, 2021. It is now read-only.

Commit

Permalink
gandalftest: implement removeRepository in testing server
Browse files Browse the repository at this point in the history
  • Loading branch information
Francisco Souza committed Feb 10, 2015
1 parent 3c2acfc commit da32b62
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
21 changes: 21 additions & 0 deletions gandalftest/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ func (s *GandalfServer) buildMuxer() {
s.muxer.Post("/user", http.HandlerFunc(s.createUser))
s.muxer.Delete("/user/{name}", http.HandlerFunc(s.removeUser))
s.muxer.Post("/repository", http.HandlerFunc(s.createRepository))
s.muxer.Delete("/repository/{name}", http.HandlerFunc(s.removeRepository))
}

func (s *GandalfServer) createUser(w http.ResponseWriter, r *http.Request) {
Expand Down Expand Up @@ -168,6 +169,26 @@ func (s *GandalfServer) createRepository(w http.ResponseWriter, r *http.Request)
s.repos = append(s.repos, repo)
}

func (s *GandalfServer) removeRepository(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get(":name")
s.repoLock.Lock()
defer s.repoLock.Unlock()
index := -1
for i, repo := range s.repos {
if repo.Name == name {
index = i
break
}
}
if index < 0 {
http.Error(w, "repository not found", http.StatusNotFound)
return
}
last := len(s.repos) - 1
s.repos[index] = s.repos[last]
s.repos = s.repos[:last]
}

func (s *GandalfServer) findUser(name string) (username string, index int) {
for i, user := range s.users {
if user == name {
Expand Down
23 changes: 23 additions & 0 deletions gandalftest/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,29 @@ func (s *S) TestCreateRepositoryUserNotFound(c *check.C) {
c.Assert(recorder.Body.String(), check.Equals, `user "user1" not found`+"\n")
}

func (s *S) TestRemoveRepository(c *check.C) {
server, err := NewServer("127.0.0.1:0")
c.Assert(err, check.IsNil)
defer server.Stop()
server.repos = []repository.Repository{{Name: "somerepo"}}
recorder := httptest.NewRecorder()
request, _ := http.NewRequest("DELETE", "/repository/somerepo", nil)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
c.Assert(server.repos, check.HasLen, 0)
}

func (s *S) TestRemoveRepositoryNotFound(c *check.C) {
server, err := NewServer("127.0.0.1:0")
c.Assert(err, check.IsNil)
defer server.Stop()
recorder := httptest.NewRecorder()
request, _ := http.NewRequest("DELETE", "/repository/somerepo", nil)
server.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusNotFound)
c.Assert(recorder.Body.String(), check.Equals, "repository not found\n")
}

func (s *S) TestPrepareFailure(c *check.C) {
server, err := NewServer("127.0.0.1:0")
c.Assert(err, check.IsNil)
Expand Down

0 comments on commit da32b62

Please sign in to comment.