Skip to content

Commit

Permalink
Pantheon should not authenticate when just initing app, fixes ddev#1905
Browse files Browse the repository at this point in the history
… (ddev#1916)

* Pantheon should not authenticate when just initing app, fixes ddev#1905
* Remove TestPantheonConfigCommand for now because it requires config-time validation
  • Loading branch information
rfay committed Jan 15, 2020
1 parent 52445d9 commit e35da84
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 19 deletions.
5 changes: 4 additions & 1 deletion cmd/ddev/cmd/config_pantheon.go
Expand Up @@ -37,7 +37,10 @@ func handlePantheonFlags(cmd *cobra.Command, args []string, app *ddevapp.DdevApp
return fmt.Errorf("failed to GetProvider: %v", err)
}
pantheonProvider := provider.(*ddevapp.PantheonProvider)
pantheonProvider.SetSiteNameAndEnv(pantheonEnvironmentName)
err = pantheonProvider.SetSiteNameAndEnv(pantheonEnvironmentName)
if err != nil {
return err
}

return nil
}
5 changes: 5 additions & 0 deletions pkg/ddevapp/pantheon_test.go
Expand Up @@ -4,6 +4,7 @@ import (
"bufio"
"fmt"
"github.com/drud/ddev/pkg/nodeps"
"github.com/drud/ddev/pkg/output"
"os"
"path/filepath"
"strings"
Expand All @@ -28,6 +29,7 @@ const pantheonTestEnvName = "bbowman"

// TestConfigCommand tests the interactive config options.
func TestPantheonConfigCommand(t *testing.T) {
t.Skip("Removing TestPantheonConfigCommand for now because it requires config-time project validation, which is being removed")
if os.Getenv("DDEV_PANTHEON_API_TOKEN") == "" {
t.Skip("No DDEV_PANTHEON_API_TOKEN env var has been set. Skipping Pantheon specific test.")
}
Expand Down Expand Up @@ -91,6 +93,7 @@ func TestPantheonConfigCommand(t *testing.T) {
assert.Equal("docroot", app.Docroot)
err = PrepDdevDirectory(testDir)
assert.NoError(err)
output.UserOut.Print("")
}

// TestPantheonBackupLinks ensures we can get backups from pantheon for a configured environment.
Expand Down Expand Up @@ -128,6 +131,7 @@ func TestPantheonBackupLinks(t *testing.T) {
assert.Equal(importPath, "")
assert.Contains(backupLink, "database.sql.gz")
assert.NoError(err)
output.UserOut.Print("")
}

// TestPantheonPull ensures we can pull backups from pantheon for a configured environment.
Expand Down Expand Up @@ -188,4 +192,5 @@ func TestPantheonPull(t *testing.T) {
_ = app.WriteConfig()
err = app.Stop(true, false)
assert.NoError(err)
output.UserOut.Print("")
}
40 changes: 22 additions & 18 deletions pkg/ddevapp/providerPantheon.go
Expand Up @@ -48,35 +48,36 @@ func (p *PantheonProvider) Init(app *DdevApp) error {
// allows provider plugins to have additional validation for top level config
// settings.
func (p *PantheonProvider) ValidateField(field, value string) error {
switch field {
case "Name":
_, err := findPantheonSite(value)
if err != nil {
p.Sitename = value
}
return err
}
return nil
}

// SetSiteNameAndEnv sets the environment of the provider (dev/test/live)
func (p *PantheonProvider) SetSiteNameAndEnv(environment string) {
func (p *PantheonProvider) SetSiteNameAndEnv(environment string) error {
_, err := findPantheonSite(p.app.Name)
if err != nil {
return fmt.Errorf("unable to find siteName %s on Pantheon: %v", p.app.Name, err)
}
p.Sitename = p.app.Name
p.EnvironmentName = environment
return nil
}

// PromptForConfig provides interactive configuration prompts when running `ddev config pantheon`
func (p *PantheonProvider) PromptForConfig() error {
for {
p.SetSiteNameAndEnv("dev")
err := p.environmentPrompt()

if err == nil {
return nil
err := p.SetSiteNameAndEnv("dev")
if err != nil {
output.UserOut.Errorf("%v\n", err)
continue
}

output.UserOut.Errorf("%v\n", err)
err = p.environmentPrompt()
if err != nil {
output.UserOut.Errorf("%v\n", err)
continue
}
break
}
return nil
}

// GetBackup will download the most recent backup specified by backupType in the given environment. If no environment
Expand Down Expand Up @@ -187,7 +188,7 @@ func (p *PantheonProvider) environmentPrompt() error {
keys = append(keys, k)
}
fmt.Println("\n\t- " + strings.Join(keys, "\n\t- ") + "\n")
var environmentPrompt = "Type the name to select an environment to import from"
var environmentPrompt = "Type the name to select an environment to pull from"
if p.EnvironmentName != "" {
environmentPrompt = fmt.Sprintf("%s (%s)", environmentPrompt, p.EnvironmentName)
}
Expand All @@ -200,7 +201,10 @@ func (p *PantheonProvider) environmentPrompt() error {
if !ok {
return fmt.Errorf("could not find an environment named '%s'", envName)
}
p.SetSiteNameAndEnv(envName)
err = p.SetSiteNameAndEnv(envName)
if err != nil {
return err
}
return nil
}

Expand Down

0 comments on commit e35da84

Please sign in to comment.