From da32b62cd1ff0bb3e032635fae2af626049119b6 Mon Sep 17 00:00:00 2001 From: Francisco Souza Date: Tue, 10 Feb 2015 13:30:34 -0200 Subject: [PATCH] gandalftest: implement removeRepository in testing server --- gandalftest/server.go | 21 +++++++++++++++++++++ gandalftest/server_test.go | 23 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/gandalftest/server.go b/gandalftest/server.go index 5a87db8..a9b6c1f 100644 --- a/gandalftest/server.go +++ b/gandalftest/server.go @@ -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) { @@ -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 { diff --git a/gandalftest/server_test.go b/gandalftest/server_test.go index f11045e..ee02dbc 100644 --- a/gandalftest/server_test.go +++ b/gandalftest/server_test.go @@ -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)