mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-22 14:52:17 +01:00
Merge pull request #3805 from vmware/add_test_suite_for_ldap
[Skip CI] add api testing suite for ldap scenario: no user creation and user de…
This commit is contained in:
commit
cd46ee2f77
17
tests/apitests/api-testing/envs/concourse_ci_ldap.go
Normal file
17
tests/apitests/api-testing/envs/concourse_ci_ldap.go
Normal file
@ -0,0 +1,17 @@
|
||||
package envs
|
||||
|
||||
//ConcourseCILdapEnv : Ldap env for concourse pipeline
|
||||
var ConcourseCILdapEnv = Environment{
|
||||
Protocol: "https",
|
||||
TestingProject: "concoursecitesting01",
|
||||
ImageName: "busybox",
|
||||
ImageTag: "latest",
|
||||
CAFile: "../../../ca.crt",
|
||||
KeyFile: "../../../key.crt",
|
||||
CertFile: "../../../cert.crt",
|
||||
Account: "mike",
|
||||
Password: "zhu88jie",
|
||||
Admin: "admin",
|
||||
AdminPass: "pksxgxmifc0cnwa5px9h",
|
||||
Hostname: "30.0.0.3",
|
||||
}
|
74
tests/apitests/api-testing/tests/suites/base/suite.go
Normal file
74
tests/apitests/api-testing/tests/suites/base/suite.go
Normal file
@ -0,0 +1,74 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/envs"
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/lib"
|
||||
)
|
||||
|
||||
//ConcourseCiSuite : Provides some base cases
|
||||
type ConcourseCiSuite struct{}
|
||||
|
||||
//Run cases
|
||||
//Not implemented
|
||||
func (ccs *ConcourseCiSuite) Run(onEnvironment *envs.Environment) *lib.Report {
|
||||
return &lib.Report{}
|
||||
}
|
||||
|
||||
//PushImage : Push image to the registry
|
||||
func (ccs *ConcourseCiSuite) PushImage(onEnvironment *envs.Environment) error {
|
||||
docker := onEnvironment.DockerClient
|
||||
if err := docker.Status(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePulling := fmt.Sprintf("%s:%s", onEnvironment.ImageName, onEnvironment.ImageTag)
|
||||
if err := docker.Pull(imagePulling); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Login(onEnvironment.Account, onEnvironment.Password, onEnvironment.Hostname); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePushing := fmt.Sprintf("%s/%s/%s:%s",
|
||||
onEnvironment.Hostname,
|
||||
onEnvironment.TestingProject,
|
||||
onEnvironment.ImageName,
|
||||
onEnvironment.ImageTag)
|
||||
|
||||
if err := docker.Tag(imagePulling, imagePushing); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Push(imagePushing); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
//PullImage : Pull image from registry
|
||||
func (ccs *ConcourseCiSuite) PullImage(onEnvironment *envs.Environment) error {
|
||||
docker := onEnvironment.DockerClient
|
||||
if err := docker.Status(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Login(onEnvironment.Account, onEnvironment.Password, onEnvironment.Hostname); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePulling := fmt.Sprintf("%s/%s/%s:%s",
|
||||
onEnvironment.Hostname,
|
||||
onEnvironment.TestingProject,
|
||||
onEnvironment.ImageName,
|
||||
onEnvironment.ImageTag)
|
||||
|
||||
if err := docker.Pull(imagePulling); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/envs"
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/lib"
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/tests/suites/base"
|
||||
)
|
||||
|
||||
//Steps of suite01:
|
||||
@ -22,7 +23,9 @@ import (
|
||||
// s11: delete user
|
||||
|
||||
//ConcourseCiSuite01 : For harbor journey in concourse pipeline
|
||||
type ConcourseCiSuite01 struct{}
|
||||
type ConcourseCiSuite01 struct {
|
||||
base.ConcourseCiSuite
|
||||
}
|
||||
|
||||
//Run : Run a group of cases
|
||||
func (ccs *ConcourseCiSuite01) Run(onEnvironment *envs.Environment) *lib.Report {
|
||||
@ -60,7 +63,7 @@ func (ccs *ConcourseCiSuite01) Run(onEnvironment *envs.Environment) *lib.Report
|
||||
}
|
||||
|
||||
//s4
|
||||
if err := ccs.pushImage(onEnvironment); err != nil {
|
||||
if err := ccs.PushImage(onEnvironment); err != nil {
|
||||
report.Failed("pushImage", err)
|
||||
} else {
|
||||
report.Passed("pushImage")
|
||||
@ -76,7 +79,7 @@ func (ccs *ConcourseCiSuite01) Run(onEnvironment *envs.Environment) *lib.Report
|
||||
}
|
||||
|
||||
//s6
|
||||
if err := ccs.pullImage(onEnvironment); err != nil {
|
||||
if err := ccs.PullImage(onEnvironment); err != nil {
|
||||
report.Failed("pullImage[1]", err)
|
||||
} else {
|
||||
report.Passed("pullImage[1]")
|
||||
@ -91,7 +94,7 @@ func (ccs *ConcourseCiSuite01) Run(onEnvironment *envs.Environment) *lib.Report
|
||||
}
|
||||
|
||||
//s8
|
||||
if err := ccs.pullImage(onEnvironment); err == nil {
|
||||
if err := ccs.PullImage(onEnvironment); err == nil {
|
||||
report.Failed("pullImage[2]", err)
|
||||
} else {
|
||||
report.Passed("pullImage[2]")
|
||||
@ -120,58 +123,3 @@ func (ccs *ConcourseCiSuite01) Run(onEnvironment *envs.Environment) *lib.Report
|
||||
|
||||
return report
|
||||
}
|
||||
|
||||
func (ccs *ConcourseCiSuite01) pushImage(onEnvironment *envs.Environment) error {
|
||||
docker := onEnvironment.DockerClient
|
||||
if err := docker.Status(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePulling := fmt.Sprintf("%s:%s", onEnvironment.ImageName, onEnvironment.ImageTag)
|
||||
if err := docker.Pull(imagePulling); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Login(onEnvironment.Account, onEnvironment.Password, onEnvironment.Hostname); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePushing := fmt.Sprintf("%s/%s/%s:%s",
|
||||
onEnvironment.Hostname,
|
||||
onEnvironment.TestingProject,
|
||||
onEnvironment.ImageName,
|
||||
onEnvironment.ImageTag)
|
||||
|
||||
if err := docker.Tag(imagePulling, imagePushing); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Push(imagePushing); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ccs *ConcourseCiSuite01) pullImage(onEnvironment *envs.Environment) error {
|
||||
docker := onEnvironment.DockerClient
|
||||
if err := docker.Status(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := docker.Login(onEnvironment.Account, onEnvironment.Password, onEnvironment.Hostname); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imagePulling := fmt.Sprintf("%s/%s/%s:%s",
|
||||
onEnvironment.Hostname,
|
||||
onEnvironment.TestingProject,
|
||||
onEnvironment.ImageName,
|
||||
onEnvironment.ImageTag)
|
||||
|
||||
if err := docker.Pull(imagePulling); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
22
tests/apitests/api-testing/tests/suites/suite02/run_test.go
Normal file
22
tests/apitests/api-testing/tests/suites/suite02/run_test.go
Normal file
@ -0,0 +1,22 @@
|
||||
package suite02
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/envs"
|
||||
)
|
||||
|
||||
//TestRun : Start to run the case
|
||||
func TestRun(t *testing.T) {
|
||||
//Initialize env
|
||||
if err := envs.ConcourseCILdapEnv.Load(); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
suite := ConcourseCiSuite02{}
|
||||
report := suite.Run(&envs.ConcourseCILdapEnv)
|
||||
report.Print()
|
||||
if report.IsFail() {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
109
tests/apitests/api-testing/tests/suites/suite02/suite.go
Normal file
109
tests/apitests/api-testing/tests/suites/suite02/suite.go
Normal file
@ -0,0 +1,109 @@
|
||||
package suite02
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/envs"
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/lib"
|
||||
"github.com/vmware/harbor/tests/apitests/api-testing/tests/suites/base"
|
||||
)
|
||||
|
||||
//Steps of suite01:
|
||||
// s0: Get systeminfo
|
||||
// s1: create project
|
||||
// s2: assign ldap user "mike" as developer
|
||||
// s3: push a busybox image to project
|
||||
// s4: scan image
|
||||
// s5: pull image from project
|
||||
// s6: remove "mike" from project member list
|
||||
// s7: pull image from project [FAIL]
|
||||
// s8: remove repository busybox
|
||||
// s9: delete project
|
||||
|
||||
//ConcourseCiSuite02 : For harbor ldap journey in concourse pipeline
|
||||
type ConcourseCiSuite02 struct {
|
||||
base.ConcourseCiSuite
|
||||
}
|
||||
|
||||
//Run : Run a group of cases
|
||||
func (ccs *ConcourseCiSuite02) Run(onEnvironment *envs.Environment) *lib.Report {
|
||||
report := &lib.Report{}
|
||||
|
||||
//s0
|
||||
sys := lib.NewSystemUtil(onEnvironment.RootURI(), onEnvironment.Hostname, onEnvironment.HTTPClient)
|
||||
if err := sys.GetSystemInfo(); err != nil {
|
||||
report.Failed("GetSystemInfo", err)
|
||||
} else {
|
||||
report.Passed("GetSystemInfo")
|
||||
}
|
||||
|
||||
//s1
|
||||
pro := lib.NewProjectUtil(onEnvironment.RootURI(), onEnvironment.HTTPClient)
|
||||
if err := pro.CreateProject(onEnvironment.TestingProject, false); err != nil {
|
||||
report.Failed("CreateProject", err)
|
||||
} else {
|
||||
report.Passed("CreateProject")
|
||||
}
|
||||
|
||||
//s2
|
||||
if err := pro.AssignRole(onEnvironment.TestingProject, onEnvironment.Account); err != nil {
|
||||
report.Failed("AssignRole", err)
|
||||
} else {
|
||||
report.Passed("AssignRole")
|
||||
}
|
||||
|
||||
//s3
|
||||
if err := ccs.PushImage(onEnvironment); err != nil {
|
||||
report.Failed("pushImage", err)
|
||||
} else {
|
||||
report.Passed("pushImage")
|
||||
}
|
||||
|
||||
//s4
|
||||
img := lib.NewImageUtil(onEnvironment.RootURI(), onEnvironment.HTTPClient)
|
||||
repoName := fmt.Sprintf("%s/%s", onEnvironment.TestingProject, onEnvironment.ImageName)
|
||||
if err := img.ScanTag(repoName, onEnvironment.ImageTag); err != nil {
|
||||
report.Failed("ScanTag", err)
|
||||
} else {
|
||||
report.Passed("ScanTag")
|
||||
}
|
||||
|
||||
//s5
|
||||
if err := ccs.PullImage(onEnvironment); err != nil {
|
||||
report.Failed("pullImage[1]", err)
|
||||
} else {
|
||||
report.Passed("pullImage[1]")
|
||||
}
|
||||
|
||||
//s6
|
||||
usr := lib.NewUserUtil(onEnvironment.RootURI(), onEnvironment.HTTPClient)
|
||||
uid := usr.GetUserID(onEnvironment.Account)
|
||||
if err := pro.RevokeRole(onEnvironment.TestingProject, uid); err != nil {
|
||||
report.Failed("RevokeRole", err)
|
||||
} else {
|
||||
report.Passed("RevokeRole")
|
||||
}
|
||||
|
||||
//s7
|
||||
if err := ccs.PullImage(onEnvironment); err == nil {
|
||||
report.Failed("pullImage[2]", err)
|
||||
} else {
|
||||
report.Passed("pullImage[2]")
|
||||
}
|
||||
|
||||
//s8
|
||||
if err := img.DeleteRepo(repoName); err != nil {
|
||||
report.Failed("DeleteRepo", err)
|
||||
} else {
|
||||
report.Passed("DeleteRepo")
|
||||
}
|
||||
|
||||
//s9
|
||||
if err := pro.DeleteProject(onEnvironment.TestingProject); err != nil {
|
||||
report.Failed("DeleteProject", err)
|
||||
} else {
|
||||
report.Passed("DeleteProject")
|
||||
}
|
||||
|
||||
return report
|
||||
}
|
Loading…
Reference in New Issue
Block a user