Skip to content

Commit

Permalink
Various lint fixes (#115)
Browse files Browse the repository at this point in the history
* Various lint fixes

* Use require instead of assert
  • Loading branch information
ob-stripe committed Aug 16, 2019
1 parent d89c62b commit 685500a
Show file tree
Hide file tree
Showing 41 changed files with 445 additions and 400 deletions.
19 changes: 14 additions & 5 deletions .golangci.yml
@@ -1,9 +1,5 @@
run:
tests: false

linters:
goimports:
local-prefixes: github.com/stripe/stripe-cli
tests: true

linters:
enable-all: true
Expand All @@ -16,3 +12,16 @@ linters:
- maligned
- unparam
- stylecheck

linters-settings:
goimports:
local-prefixes: github.com/stripe/stripe-cli
misspell:
locale: US

issues:
exclude-rules:
- path: _test\.go
linters:
- dupl
exclude-use-default: false
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -31,7 +31,7 @@ fmt:

# Run all the linters
lint:
# TODO: fix tests and disabled linter issues
# TODO: fix disabled linter issues
./bin/golangci-lint run ./...
./bin/misspell -error **/*.go
.PHONY: lint
Expand Down
1 change: 1 addition & 0 deletions go.mod
Expand Up @@ -11,6 +11,7 @@ require (
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/logrusorgru/aurora v0.0.0-20190803045625-94edacc10f9b
github.com/magiconair/properties v1.8.1 // indirect
github.com/mattn/go-isatty v0.0.9 // indirect
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/onsi/ginkgo v1.8.0 // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Expand Up @@ -83,6 +83,8 @@ github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg=
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
Expand Down
1 change: 1 addition & 0 deletions pkg/cmd/config.go
Expand Up @@ -2,6 +2,7 @@ package cmd

import (
"github.com/spf13/cobra"

"github.com/stripe/stripe-cli/pkg/config"
)

Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/listen.go
Expand Up @@ -62,7 +62,7 @@ to your localhost:
RunE: lc.runListenCmd,
}

lc.cmd.Flags().StringSliceVarP(&lc.events, "events", "e", []string{"*"}, "A comma-separated list of which webhook events\nto listen for. For a list of all possible events, see:\nhttps://stripe.com/docs/api/events/types")
lc.cmd.Flags().StringSliceVarP(&lc.events, "events", "e", []string{"*"}, "A comma-separated list of which webhook events to listen for. For a list of all possible events, see: https://stripe.com/docs/api/events/types")
lc.cmd.Flags().StringVarP(&lc.forwardURL, "forward-to", "f", "", "The URL to forward webhook events to")
lc.cmd.Flags().StringVarP(&lc.forwardConnectURL, "forward-connect-to", "c", "", "The URL to forward Connect webhook events to (default: same as normal events)")
lc.cmd.Flags().BoolVarP(&lc.latestAPIVersion, "latest", "l", false, "Receive events formatted with the latest API version (default: your account's default API version)")
Expand Down
26 changes: 13 additions & 13 deletions pkg/cmd/listen_test.go
Expand Up @@ -3,20 +3,20 @@ package cmd
import (
"testing"

assert "github.com/stretchr/testify/require"
"github.com/stretchr/testify/require"

"github.com/stripe/stripe-cli/pkg/requests"
)

func TestParseUrl(t *testing.T) {
assert.Equal(t, "http://example.com/foo", parseURL("http://example.com/foo"))
assert.Equal(t, "https://example.com/foo", parseURL("https://example.com/foo"))
require.Equal(t, "http://example.com/foo", parseURL("http://example.com/foo"))
require.Equal(t, "https://example.com/foo", parseURL("https://example.com/foo"))

assert.Equal(t, "http://example.com/foo", parseURL("example.com/foo"))
require.Equal(t, "http://example.com/foo", parseURL("example.com/foo"))

assert.Equal(t, "http://localhost/foo", parseURL("/foo"))
require.Equal(t, "http://localhost/foo", parseURL("/foo"))

assert.Equal(t, "http://localhost:3000", parseURL("3000"))
require.Equal(t, "http://localhost:3000", parseURL("3000"))
}

func TestBuildEndpointRoutes(t *testing.T) {
Expand All @@ -39,11 +39,11 @@ func TestBuildEndpointRoutes(t *testing.T) {
}

output := buildEndpointRoutes(endpointList, localURL, localURL)
assert.Equal(t, 2, len(output))
assert.Equal(t, "http://localhost/hooks", output[0].URL)
assert.Equal(t, false, output[0].Connect)
assert.Equal(t, []string{"*"}, output[0].EventTypes)
assert.Equal(t, "http://localhost/connect-hooks", output[1].URL)
assert.Equal(t, true, output[1].Connect)
assert.Equal(t, []string{"*"}, output[1].EventTypes)
require.Equal(t, 2, len(output))
require.Equal(t, "http://localhost/hooks", output[0].URL)
require.Equal(t, false, output[0].Connect)
require.Equal(t, []string{"*"}, output[0].EventTypes)
require.Equal(t, "http://localhost/connect-hooks", output[1].URL)
require.Equal(t, true, output[1].Connect)
require.Equal(t, []string{"*"}, output[1].EventTypes)
}
20 changes: 10 additions & 10 deletions pkg/cmd/resource/namespace_test.go
Expand Up @@ -4,30 +4,30 @@ import (
"testing"

"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestNewNamespaceCmd_NonEmptyName(t *testing.T) {
rootCmd := &cobra.Command{Annotations: make(map[string]string)}

nsc := NewNamespaceCmd(rootCmd, "foo")

assert.Equal(t, "foo", nsc.Name)
assert.True(t, rootCmd.HasSubCommands())
require.Equal(t, "foo", nsc.Name)
require.True(t, rootCmd.HasSubCommands())
val, ok := rootCmd.Annotations["foo"]
assert.True(t, ok)
assert.Equal(t, "namespace", val)
assert.Contains(t, nsc.Cmd.UsageTemplate(), "Available Resources")
require.True(t, ok)
require.Equal(t, "namespace", val)
require.Contains(t, nsc.Cmd.UsageTemplate(), "Available Resources")
}

func TestNewNamespaceCmd_EmptyName(t *testing.T) {
rootCmd := &cobra.Command{Annotations: make(map[string]string)}

nsc := NewNamespaceCmd(rootCmd, "")

assert.Equal(t, "", nsc.Name)
assert.False(t, rootCmd.HasSubCommands())
require.Equal(t, "", nsc.Name)
require.False(t, rootCmd.HasSubCommands())
_, ok := rootCmd.Annotations[""]
assert.False(t, ok)
assert.Contains(t, nsc.Cmd.UsageTemplate(), "Available Resources")
require.False(t, ok)
require.Contains(t, nsc.Cmd.UsageTemplate(), "Available Resources")
}
18 changes: 9 additions & 9 deletions pkg/cmd/resource/operation_test.go
Expand Up @@ -4,7 +4,7 @@ import (
"testing"

"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/stripe/stripe-cli/pkg/config"
)
Expand All @@ -14,13 +14,13 @@ func TestNewOperationCmd(t *testing.T) {

oc := NewOperationCmd(parentCmd, "foo", "/v1/bars/{id}", "get", &config.Config{})

assert.Equal(t, "foo", oc.Name)
assert.Equal(t, "/v1/bars/{id}", oc.Path)
assert.Equal(t, "GET", oc.HTTPVerb)
assert.Equal(t, []string{"{id}"}, oc.URLParams)
assert.True(t, parentCmd.HasSubCommands())
require.Equal(t, "foo", oc.Name)
require.Equal(t, "/v1/bars/{id}", oc.Path)
require.Equal(t, "GET", oc.HTTPVerb)
require.Equal(t, []string{"{id}"}, oc.URLParams)
require.True(t, parentCmd.HasSubCommands())
val, ok := parentCmd.Annotations["foo"]
assert.True(t, ok)
assert.Equal(t, "operation", val)
assert.Contains(t, oc.Cmd.UsageTemplate(), "<id>")
require.True(t, ok)
require.Equal(t, "operation", val)
require.Contains(t, oc.Cmd.UsageTemplate(), "<id>")
}
12 changes: 6 additions & 6 deletions pkg/cmd/resource/resource_test.go
Expand Up @@ -4,18 +4,18 @@ import (
"testing"

"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestNewResourceCmd(t *testing.T) {
parentCmd := &cobra.Command{Annotations: make(map[string]string)}

rc := NewResourceCmd(parentCmd, "foo")

assert.Equal(t, "foo", rc.Name)
assert.True(t, parentCmd.HasSubCommands())
require.Equal(t, "foo", rc.Name)
require.True(t, parentCmd.HasSubCommands())
val, ok := parentCmd.Annotations["foo"]
assert.True(t, ok)
assert.Equal(t, "resource", val)
assert.Contains(t, rc.Cmd.UsageTemplate(), "Available Operations")
require.True(t, ok)
require.Equal(t, "resource", val)
require.Contains(t, rc.Cmd.UsageTemplate(), "Available Operations")
}
8 changes: 4 additions & 4 deletions pkg/cmd/resources_test.go
Expand Up @@ -3,14 +3,14 @@ package cmd
import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestResources(t *testing.T) {
Execute()
output, err := executeCommand(rootCmd, "resources")

assert.Contains(t, output, "Available Namespaces:")
assert.Contains(t, output, "Available Resources:")
assert.NoError(t, err)
require.Contains(t, output, "Available Namespaces:")
require.Contains(t, output, "Available Resources:")
require.NoError(t, err)
}
12 changes: 6 additions & 6 deletions pkg/cmd/root_test.go
Expand Up @@ -6,7 +6,7 @@ import (

"github.com/mitchellh/go-homedir"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func executeCommand(root *cobra.Command, args ...string) (output string, err error) {
Expand All @@ -29,21 +29,21 @@ func TestGetPathNoXDG(t *testing.T) {
expected, err := homedir.Dir()
expected += "/.config/stripe"

assert.Nil(t, err)
assert.Equal(t, actual, expected)
require.Nil(t, err)
require.Equal(t, actual, expected)
}

func TestGetPathXDG(t *testing.T) {
actual := Config.GetProfilesFolder("/some/xdg/path")
expected := "/some/xdg/path/stripe"

assert.Equal(t, actual, expected)
require.Equal(t, actual, expected)
}

func TestHelpFlag(t *testing.T) {
Execute()
output, err := executeCommand(rootCmd, "--help")

assert.Contains(t, output, "Stripe commands:")
assert.NoError(t, err)
require.Contains(t, output, "Stripe commands:")
require.NoError(t, err)
}
1 change: 1 addition & 0 deletions pkg/cmd/status.go
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"github.com/spf13/cobra"

"github.com/stripe/stripe-cli/pkg/ansi"
"github.com/stripe/stripe-cli/pkg/status"
"github.com/stripe/stripe-cli/pkg/validators"
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/config.go
Expand Up @@ -115,6 +115,7 @@ func (c *Config) InitConfig() {
}
}

// EditConfig opens the configuration file in the default editor.
func (c *Config) EditConfig() error {
var err error

Expand All @@ -139,6 +140,7 @@ func (c *Config) EditConfig() error {
return err
}

// PrintConfig outputs the contents of the configuration file.
func (c *Config) PrintConfig() error {
if c.Profile.ProfileName == "default" {
configFile, err := ioutil.ReadFile(c.ProfilesFile)
Expand Down
8 changes: 4 additions & 4 deletions pkg/config/config_test.go
Expand Up @@ -4,7 +4,7 @@ import (
"testing"

"github.com/spf13/viper"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestRemoveKey(t *testing.T) {
Expand All @@ -13,8 +13,8 @@ func TestRemoveKey(t *testing.T) {
v.Set("stay", "here")

nv, err := removeKey(v, "remove")
assert.NoError(t, err)
require.NoError(t, err)

assert.EqualValues(t, []string{"stay"}, nv.AllKeys())
assert.ElementsMatch(t, []string{"stay", "remove"}, v.AllKeys())
require.EqualValues(t, []string{"stay"}, nv.AllKeys())
require.ElementsMatch(t, []string{"stay", "remove"}, v.AllKeys())
}
5 changes: 5 additions & 0 deletions pkg/config/profile.go
Expand Up @@ -6,6 +6,7 @@ import (
"strings"

"github.com/spf13/viper"

"github.com/stripe/stripe-cli/pkg/validators"
)

Expand Down Expand Up @@ -75,15 +76,19 @@ func (p *Profile) GetConfigField(field string) string {
return p.ProfileName + "." + field
}

// RegisterAlias registers an alias for a given key.
func (p *Profile) RegisterAlias(alias, key string) {
viper.RegisterAlias(p.GetConfigField(alias), p.GetConfigField(key))
}

// WriteConfigField updates a configuration field and writes the updated
// configuration to disk.
func (p *Profile) WriteConfigField(field, value string) error {
viper.Set(p.GetConfigField(field), value)
return viper.WriteConfig()
}

// DeleteConfigField deletes a configuration field.
func (p *Profile) DeleteConfigField(field string) error {
v, err := removeKey(viper.GetViper(), p.GetConfigField(field))
if err != nil {
Expand Down
18 changes: 9 additions & 9 deletions pkg/config/profile_test.go
Expand Up @@ -8,7 +8,7 @@ import (
"testing"

"github.com/spf13/viper"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestWriteProfile(t *testing.T) {
Expand All @@ -31,17 +31,17 @@ func TestWriteProfile(t *testing.T) {

fmt.Println(profilesFile)
err := p.writeProfile(v)
assert.NoError(t, err)
require.NoError(t, err)

assert.FileExists(t, c.ProfilesFile)
require.FileExists(t, c.ProfilesFile)

configValues := helperLoadBytes(t, c.ProfilesFile)
expectedConfig := `
[tests]
api_key = "sk_test_123"
device_name = "st-testing"
`
assert.EqualValues(t, expectedConfig, string(configValues))
require.EqualValues(t, expectedConfig, string(configValues))

cleanUp(c.ProfilesFile)
}
Expand All @@ -65,13 +65,13 @@ func TestWriteProfilesMerge(t *testing.T) {
v := viper.New()
writeErr := p.writeProfile(v)

assert.NoError(t, writeErr)
assert.FileExists(t, c.ProfilesFile)
require.NoError(t, writeErr)
require.FileExists(t, c.ProfilesFile)

p.ProfileName = "tests-merge"
writeErrTwo := p.writeProfile(v)
assert.NoError(t, writeErrTwo)
assert.FileExists(t, c.ProfilesFile)
require.NoError(t, writeErrTwo)
require.FileExists(t, c.ProfilesFile)

configValues := helperLoadBytes(t, c.ProfilesFile)
expectedConfig := `
Expand All @@ -84,7 +84,7 @@ func TestWriteProfilesMerge(t *testing.T) {
device_name = "st-testing"
`

assert.EqualValues(t, expectedConfig, string(configValues))
require.EqualValues(t, expectedConfig, string(configValues))

cleanUp(c.ProfilesFile)
}
Expand Down

0 comments on commit 685500a

Please sign in to comment.