diff --git a/api/api_test.go b/api/api_test.go index 27e1cb5f0..8c62b31df 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -3,6 +3,7 @@ package api import ( "bytes" "encoding/json" + "fmt" "io" "net/http" "net/http/httptest" @@ -38,7 +39,7 @@ func createTestConfig() *os.File { return nil } jsonString, err := json.Marshal(gin.H{ - "architectures": []string{}, + "architectures": []string{}, "enableMetricsEndpoint": true, }) if err != nil { @@ -48,10 +49,12 @@ func createTestConfig() *os.File { return file } -func (s *ApiSuite) SetUpSuite(c *C) { +func (s *ApiSuite) setupContext() error { aptly.Version = "testVersion" file := createTestConfig() - c.Assert(file, NotNil) + if nil == file { + return fmt.Errorf("unable to create the test configuration file") + } s.configFile = file flags := flag.NewFlagSet("fakeFlags", flag.ContinueOnError) @@ -62,10 +65,19 @@ func (s *ApiSuite) SetUpSuite(c *C) { s.flags = flags context, err := ctx.NewContext(s.flags) - c.Assert(err, IsNil) + if nil != err { + return err + } s.context = context s.router = Router(context) + + return nil +} + +func (s *ApiSuite) SetUpSuite(c *C) { + err := s.setupContext() + c.Assert(err, IsNil) } func (s *ApiSuite) TearDownSuite(c *C) { @@ -98,7 +110,7 @@ func (s *ApiSuite) TestGetVersion(c *C) { response, err := s.HTTPRequest("GET", "/api/version", nil) c.Assert(err, IsNil) c.Check(response.Code, Equals, 200) - c.Check(response.Body.String(), Matches, "{\"Version\":\"" + aptly.Version + "\"}") + c.Check(response.Body.String(), Matches, "{\"Version\":\""+aptly.Version+"\"}") } func (s *ApiSuite) TestGetReadiness(c *C) { diff --git a/system/t12_api/repos.py b/system/t12_api/repos.py index 8396ddb50..41c63e49c 100644 --- a/system/t12_api/repos.py +++ b/system/t12_api/repos.py @@ -360,3 +360,32 @@ def check(self): self.check_not_in(b"Warnings: ", resp.content) self.check_equal(self.get("/api/repos/" + repo_name + "/packages?maximumVersion=1").json(), ['Pi386 libboost-program-options-dev 1.62.0.1 7760e62f99c551cb']) + + +class ReposAPITestCopyPackage(APITest): + """ + POST /api/repos/:name/copy/:src/:file + """ + def check(self): + pkg_name = "libboost-program-options-dev_1.49.0.1_i386" + + # Creating origin repo + repo1_name = self.random_name() + self.check_equal(self.post("/api/repos", json={"Name": repo1_name, "Comment": "origin repo"}).status_code, 201) + + # Uploading test package + d = self.random_name() + self.check_equal(self.upload(f"/api/files/{d}", f"{pkg_name}.deb").status_code, 200) + resp = self.post_task(f"/api/repos/{repo1_name}/file/{d}/{pkg_name}.deb") + self.check_equal(resp.json()['State'], TASK_SUCCEEDED) + + # Creating target repo + repo2_name = self.random_name() + self.check_equal(self.post("/api/repos", json={"Name": repo2_name, "Comment": "target repo"}).status_code, 201) + + # Copy the package + resp = self.post_task(f"/api/repos/{repo2_name}/copy/{repo1_name}/{pkg_name}.deb") + self.check_equal(resp.status_code, 200) + self.check_equal(resp.json()['State'], TASK_SUCCEEDED) + self.check_equal(self.get(f"/api/repos/{repo2_name}/packages").json(), + ['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378'])