make space and organization optional

This commit is contained in:
Ke Zhu 2014-04-20 10:35:50 -04:00
parent a0fce08fc3
commit 25f167b34a
2 changed files with 64 additions and 43 deletions

View file

@ -17,19 +17,19 @@ type CloudFoundry struct {
func (cf *CloudFoundry) Write(f *buildfile.Buildfile) { func (cf *CloudFoundry) Write(f *buildfile.Buildfile) {
// login // login
loginCmd := "cf login -a %s -u %s -p %s -o %s -s %s" loginCmd := "cf login -a %s -u %s -p %s"
organization := cf.Org organization := cf.Org
if organization == "" { if organization != "" {
organization = cf.Username loginCmd += fmt.Sprintf(" -o %s", organization)
} }
space := cf.Space space := cf.Space
if space == "" { if space != "" {
space = "dev" loginCmd += fmt.Sprintf(" -s %s", space)
} }
f.WriteCmdSilent(fmt.Sprintf(loginCmd, cf.Target, cf.Username, cf.Password, organization, space)) f.WriteCmdSilent(fmt.Sprintf(loginCmd, cf.Target, cf.Username, cf.Password))
// push app // push app
pushCmd := "cf push %s" pushCmd := "cf push %s"

View file

@ -1,17 +1,17 @@
package deploy package deploy
import ( import (
"strings" "strings"
"testing" "testing"
"github.com/drone/drone/pkg/build/buildfile" "github.com/drone/drone/pkg/build/buildfile"
"launchpad.net/goyaml" "launchpad.net/goyaml"
) )
// emulate Build struct // emulate Build struct
type DeployToCF struct { type DeployToCF struct {
Deploy *Deploy `yaml:"deploy,omitempty"` Deploy *Deploy `yaml:"deploy,omitempty"`
} }
var sampleYmlBasic = ` var sampleYmlBasic = `
@ -31,6 +31,16 @@ deploy:
org: custom-org org: custom-org
` `
var sampleYmlWithSpace = `
deploy:
cloudfoundry:
target: https://api.example.com
username: foo
password: bar
org: custom-org
space: dev
`
var sampleYmlWithAppName = ` var sampleYmlWithAppName = `
deploy: deploy:
cloudfoundry: cloudfoundry:
@ -41,49 +51,60 @@ deploy:
` `
func setUpWithCF(input string) (string, error) { func setUpWithCF(input string) (string, error) {
var buildStruct DeployToCF var buildStruct DeployToCF
err := goyaml.Unmarshal([]byte(input), &buildStruct) err := goyaml.Unmarshal([]byte(input), &buildStruct)
if err != nil { if err != nil {
return "", err return "", err
} }
bf := buildfile.New() bf := buildfile.New()
buildStruct.Deploy.Write(bf) buildStruct.Deploy.Write(bf)
return bf.String(), err return bf.String(), err
} }
func TestCloudFoundryDeployment(t *testing.T) { func TestCloudFoundryDeployment(t *testing.T) {
bscr, err := setUpWithCF(sampleYmlBasic) bscr, err := setUpWithCF(sampleYmlBasic)
if err != nil { if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err) 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 foo -s dev") { if !strings.Contains(bscr, "cf login -a https://api.example.com -u foo -p bar") {
t.Error("Expect login script to contains default space") t.Error("Expect login script to contains username and password")
} }
if !strings.Contains(bscr, "cf push") { if !strings.Contains(bscr, "cf push") {
t.Error("Expect script to contains push") t.Error("Expect script to contains push")
} }
} }
func TestCloudFoundryDeploymentWithOrg(t *testing.T) { func TestCloudFoundryDeploymentWithOrg(t *testing.T) {
bscr, err := setUpWithCF(sampleYmlWithOrg) bscr, err := setUpWithCF(sampleYmlWithOrg)
if err != nil { if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err) 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") { if !strings.Contains(bscr, "cf login -a https://api.example.com -u foo -p bar -o custom-org") {
t.Error("Expect login script to contains organization") t.Error("Expect login script to contains organization")
} }
}
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 contains space")
}
} }
func TestCloudFoundryDeploymentWithApp(t *testing.T) { func TestCloudFoundryDeploymentWithApp(t *testing.T) {
bscr, err := setUpWithCF(sampleYmlWithAppName) bscr, err := setUpWithCF(sampleYmlWithAppName)
if err != nil { if err != nil {
t.Fatalf("Can't unmarshal deploy script: %s", err) t.Fatalf("Can't unmarshal deploy script: %s", err)
} }
if !strings.Contains(bscr, "cf push test-app") { if !strings.Contains(bscr, "cf push test-app") {
t.Error("Expect login script to contains app name") t.Error("Expect login script to contains app name")
} }
} }