1
0
mirror of https://github.com/woodpecker-ci/woodpecker.git synced 2024-12-30 10:11:23 +02:00
woodpecker/pkg/plugin/deploy/cloudfoundry_test.go

126 lines
3.0 KiB
Go
Raw Normal View History

2014-03-29 23:09:16 +03:00
package deploy
import (
2014-04-20 17:35:50 +03:00
"strings"
"testing"
2014-03-29 23:09:16 +03:00
2014-04-20 17:35:50 +03:00
"github.com/drone/drone/pkg/build/buildfile"
2014-03-29 23:09:16 +03:00
2014-04-20 17:35:50 +03:00
"launchpad.net/goyaml"
2014-03-29 23:09:16 +03:00
)
// emulate Build struct
type DeployToCF struct {
2014-04-20 17:35:50 +03:00
Deploy *Deploy `yaml:"deploy,omitempty"`
2014-03-29 23:09:16 +03:00
}
var sampleYmlBasic = `
deploy:
cloudfoundry:
target: https://api.example.com
username: foo
password: bar
`
var sampleYmlWithOrg = `
deploy:
cloudfoundry:
target: https://api.example.com
username: foo
password: bar
org: custom-org
`
2014-04-20 17:35:50 +03:00
var sampleYmlWithSpace = `
deploy:
cloudfoundry:
target: https://api.example.com
username: foo
password: bar
org: custom-org
space: dev
`
2014-03-29 23:09:16 +03:00
var sampleYmlWithAppName = `
deploy:
cloudfoundry:
target: https://api.example.com
username: foo
password: bar
app: test-app
`
func setUpWithCF(input string) (string, error) {
2014-04-20 17:35:50 +03:00
var buildStruct DeployToCF
err := goyaml.Unmarshal([]byte(input), &buildStruct)
if err != nil {
return "", err
}
bf := buildfile.New()
buildStruct.Deploy.Write(bf)
return bf.String(), err
2014-03-29 23:09:16 +03:00
}
func TestCloudFoundryToolInstall(t *testing.T) {
bscr, err := setUpWithCF(sampleYmlBasic)
if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err)
}
if !strings.Contains(bscr, "curl -sLO http://go-cli.s3-website-us-east-1.amazonaws.com/releases/latest/cf-cli_amd64.deb") {
t.Error("Expect script to contain download command")
}
if !strings.Contains(bscr, "dpkg -i cf-cli_amd64.deb") {
t.Error("Expect script to contain install command")
}
}
2014-03-29 23:09:16 +03:00
func TestCloudFoundryDeployment(t *testing.T) {
2014-04-20 17:35:50 +03:00
bscr, err := setUpWithCF(sampleYmlBasic)
if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err)
}
if !strings.Contains(bscr, "cf login -a https://api.example.com -u foo -p bar") {
t.Error("Expect login script to contain username and password")
2014-04-20 17:35:50 +03:00
}
if !strings.Contains(bscr, "cf push") {
t.Error("Expect script to contain push")
2014-04-20 17:35:50 +03:00
}
2014-03-29 23:09:16 +03:00
}
func TestCloudFoundryDeploymentWithOrg(t *testing.T) {
2014-04-20 17:35:50 +03:00
bscr, err := setUpWithCF(sampleYmlWithOrg)
if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err)
}
if !strings.Contains(bscr, "cf login -a https://api.example.com -u foo -p bar -o custom-org") {
t.Error("Expect login script to contain organization")
2014-04-20 17:35:50 +03:00
}
}
func TestCloudFoundryDeploymentWithSpace(t *testing.T) {
bscr, err := setUpWithCF(sampleYmlWithSpace)
if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err)
}
if !strings.Contains(bscr, "cf login -a https://api.example.com -u foo -p bar -o custom-org -s dev") {
t.Error("Expect login script to contain space")
2014-04-20 17:35:50 +03:00
}
2014-03-29 23:09:16 +03:00
}
func TestCloudFoundryDeploymentWithApp(t *testing.T) {
2014-04-20 17:35:50 +03:00
bscr, err := setUpWithCF(sampleYmlWithAppName)
if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err)
}
if !strings.Contains(bscr, "cf push test-app") {
t.Error("Expect login script to contain app name")
2014-04-20 17:35:50 +03:00
}
2014-03-29 23:09:16 +03:00
}