Skip to content

Commit f7d0a5d

Browse files
author
Matthew Fisher
committed
tests(pkg): beef up unit tests
1 parent d62f9a2 commit f7d0a5d

18 files changed

Lines changed: 389 additions & 57 deletions

File tree

boot.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
_ "github.com/docker/distribution/registry/storage/driver/gcs"
2121
_ "github.com/docker/distribution/registry/storage/driver/s3-aws"
2222
_ "github.com/docker/distribution/registry/storage/driver/swift"
23+
"github.com/kelseyhightower/envconfig"
2324
kcl "k8s.io/kubernetes/pkg/client/unversioned"
2425
)
2526

@@ -48,7 +49,7 @@ func main() {
4849
Usage: "Run the git server",
4950
Action: func(c *cli.Context) {
5051
cnf := new(sshd.Config)
51-
if err := conf.EnvConfig(serverConfAppName, cnf); err != nil {
52+
if err := envconfig.Process(serverConfAppName, cnf); err != nil {
5253
pkglog.Err("getting config for %s [%s]", serverConfAppName, err)
5354
os.Exit(1)
5455
}
@@ -118,7 +119,7 @@ func main() {
118119
Usage: "Run the git-receive hook",
119120
Action: func(c *cli.Context) {
120121
cnf := new(gitreceive.Config)
121-
if err := conf.EnvConfig(gitReceiveConfAppName, cnf); err != nil {
122+
if err := envconfig.Process(gitReceiveConfAppName, cnf); err != nil {
122123
log.Printf("Error getting config for %s [%s]", gitReceiveConfAppName, err)
123124
os.Exit(1)
124125
}

glide.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import:
1616
version: eca94c41d994ae2215d455ce578ae6e2dc6ee516
1717
- package: github.com/pborman/uuid
1818
- package: github.com/deis/pkg
19-
version: 189ed6bd6b6aa6629b72c2c5472095e176eec8a6
19+
version: 00e55bded444eea7fadff398f93152e962a0c338
2020
subpackages:
2121
- time
2222
- log

pkg/conf/config.go

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,25 @@ import (
66
"strings"
77

88
"github.com/deis/builder/pkg/sys"
9-
"github.com/kelseyhightower/envconfig"
109
)
1110

1211
const (
13-
BuilderKeyLocation = "/var/run/secrets/api/auth/builder-key"
1412
storageCredLocation = "/var/run/secrets/deis/objectstore/creds/"
1513
minioHostEnvVar = "DEIS_MINIO_SERVICE_HOST"
1614
minioPortEnvVar = "DEIS_MINIO_SERVICE_PORT"
1715
gcsKey = "key.json"
1816
)
1917

18+
var BuilderKeyLocation string = "/var/run/secrets/api/auth/builder-key"
19+
2020
// Parameters is map which contains storage params
2121
type Parameters map[string]interface{}
2222

23-
// EnvConfig is a convenience function to process the envconfig (
24-
// https://github.com/kelseyhightower/envconfig) based configuration environment variables into
25-
// conf. Additional notes:
26-
//
27-
// - appName will be passed as the first parameter to envconfig.Process
28-
// - conf should be a pointer to an envconfig compatible struct. If you'd like to use struct
29-
// tags to customize your struct, see
30-
// https://github.com/kelseyhightower/envconfig#struct-tag-support
31-
func EnvConfig(appName string, conf interface{}) error {
32-
if err := envconfig.Process(appName, conf); err != nil {
33-
return err
34-
}
35-
return nil
36-
}
37-
3823
// GetBuilderKey returns the key to be used as token to interact with deis-controller
39-
func GetBuilderKey(builderKeyPath string) (string, error) {
40-
builderKeyBytes, err := ioutil.ReadFile(builderKeyPath)
24+
func GetBuilderKey() (string, error) {
25+
builderKeyBytes, err := ioutil.ReadFile(BuilderKeyLocation)
4126
if err != nil {
42-
return "", fmt.Errorf("couldn't get builder key from %s (%s)", builderKeyPath, err)
27+
return "", fmt.Errorf("couldn't get builder key from %s (%s)", BuilderKeyLocation, err)
4328
}
4429
builderKey := strings.Trim(string(builderKeyBytes), "\n")
4530
return builderKey, nil

pkg/conf/config_test.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io/ioutil"
55
"os"
66
"os/user"
7+
"path/filepath"
78
"testing"
89

910
"github.com/arschles/assert"
@@ -64,28 +65,47 @@ func TestGetStorageParams(t *testing.T) {
6465
if err != nil {
6566
t.Errorf("received error while retrieving storage params: %v", err)
6667
}
68+
69+
env := sys.NewFakeEnv()
70+
env.Envs = map[string]string{
71+
"BUILDER_STORAGE": "minio",
72+
"DEIS_MINIO_SERVICE_HOST": "localhost",
73+
"DEIS_MINIO_SERVICE_PORT": "8088",
74+
}
75+
params, err = GetStorageParams(env)
76+
if err != nil {
77+
t.Errorf("received error while retrieving storage params: %v", err)
78+
}
79+
assert.Equal(t, params["regionendpoint"], "http://localhost:8088", "region endpoint")
80+
assert.Equal(t, params["secure"], false, "secure")
81+
assert.Equal(t, params["region"], "us-east-1", "region")
82+
assert.Equal(t, params["bucket"], "git", "bucket")
6783
}
6884

6985
func TestGetControllerClient(t *testing.T) {
7086
tmpDir, err := ioutil.TempDir("", "tmpdir")
7187
if err != nil {
7288
t.Fatalf("error creating temp directory (%s)", err)
7389
}
74-
data := []byte("testbuilderkey")
75-
if err := ioutil.WriteFile(tmpDir+"/builder-key", data, 0644); err != nil {
76-
t.Fatalf("error creating %s/builder-key (%s)", tmpDir, err)
77-
}
90+
7891
defer func() {
7992
if err := os.RemoveAll(tmpDir); err != nil {
8093
t.Fatalf("failed to remove builder-key from %s (%s)", tmpDir, err)
8194
}
8295
}()
83-
key, err := GetBuilderKey(tmpDir + "/builder-key")
96+
97+
BuilderKeyLocation = filepath.Join(tmpDir, "builder-key")
98+
data := []byte("testbuilderkey")
99+
if err := ioutil.WriteFile(BuilderKeyLocation, data, 0644); err != nil {
100+
t.Fatalf("error creating %s (%s)", BuilderKeyLocation, err)
101+
}
102+
103+
key, err := GetBuilderKey()
84104
assert.NoErr(t, err)
85105
assert.Equal(t, key, string(data), "data")
86106
}
87107

88108
func TestGetBuilderKeyError(t *testing.T) {
89-
_, err := GetBuilderKey("/builder-key")
109+
_, err := GetBuilderKey()
90110
assert.True(t, err != nil, "no error received when there should have been")
91111
}

pkg/controller/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import (
99
)
1010

1111
// New creates a new SDK client configured as the builder.
12-
func New(host, port, builderKeyPath string) (*deis.Client, error) {
12+
func New(host, port string) (*deis.Client, error) {
1313

1414
client, err := deis.New(true, fmt.Sprintf("http://%s:%s/", host, port), "")
1515
if err != nil {
1616
return client, err
1717
}
1818
client.UserAgent = "deis-builder"
1919

20-
builderKey, err := conf.GetBuilderKey(builderKeyPath)
20+
builderKey, err := conf.GetBuilderKey()
2121
if err != nil {
2222
return client, err
2323
}

pkg/controller/utils_test.go

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,68 @@
11
package controller
22

33
import (
4+
"errors"
45
"fmt"
56
"io/ioutil"
67
"os"
8+
"path/filepath"
79
"testing"
810

11+
builderconf "github.com/deis/builder/pkg/conf"
12+
913
"github.com/arschles/assert"
14+
deis "github.com/deis/controller-sdk-go"
1015
)
1116

12-
func TestGetControllerClient(t *testing.T) {
17+
func TestNew(t *testing.T) {
1318
tmpDir, err := ioutil.TempDir("", "tmpdir")
1419
if err != nil {
1520
t.Fatalf("error creating temp directory (%s)", err)
1621
}
17-
data := []byte("testbuilderkey")
18-
if err := ioutil.WriteFile(tmpDir+"/builder-key", data, 0644); err != nil {
19-
t.Fatalf("error creating %s/builder-key (%s)", tmpDir, err)
20-
}
22+
2123
defer func() {
2224
if err := os.RemoveAll(tmpDir); err != nil {
2325
t.Fatalf("failed to remove builder-key from %s (%s)", tmpDir, err)
2426
}
2527
}()
28+
29+
builderconf.BuilderKeyLocation = filepath.Join(tmpDir, "builder-key")
30+
data := []byte("testbuilderkey")
31+
if err := ioutil.WriteFile(builderconf.BuilderKeyLocation, data, 0644); err != nil {
32+
t.Fatalf("error creating %s (%s)", builderconf.BuilderKeyLocation, err)
33+
}
34+
2635
host := "127.0.0.1"
2736
port := "80"
28-
cli, err := New(host, port, tmpDir+"/builder-key")
37+
cli, err := New(host, port)
2938
assert.NoErr(t, err)
3039
assert.Equal(t, cli.ControllerURL.String(), fmt.Sprintf("http://%s:%s/", host, port), "data")
3140
assert.Equal(t, cli.HooksToken, string(data), "data")
41+
assert.Equal(t, cli.UserAgent, "deis-builder", "user-agent")
42+
43+
port = "invalid-port-number"
44+
if _, err = New(host, port); err == nil {
45+
t.Errorf("expected error with invalid port number, got nil")
46+
}
3247
}
3348

34-
func TestGetControllerClientError(t *testing.T) {
49+
func TestNewWithInvalidBuilderKeyPath(t *testing.T) {
3550
host := "127.0.0.1"
3651
port := "80"
37-
_, err := New(host, port, "/builder-key")
52+
_, err := New(host, port)
3853
assert.True(t, err != nil, "no error received when there should have been")
3954
}
55+
56+
func TestCheckAPICompat(t *testing.T) {
57+
client := &deis.Client{ControllerAPIVersion: deis.APIVersion}
58+
err := deis.ErrAPIMismatch
59+
60+
if apiErr := CheckAPICompat(client, err); apiErr != nil {
61+
t.Errorf("api errors are non-fatal and should return nil, got '%v'", apiErr)
62+
}
63+
64+
err = errors.New("random error")
65+
if apiErr := CheckAPICompat(client, err); apiErr == nil {
66+
t.Error("expected error to be returned, got nil")
67+
}
68+
}

pkg/gitreceive/build.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"path/filepath"
1212
"strings"
1313

14-
builderconf "github.com/deis/builder/pkg/conf"
1514
"github.com/deis/builder/pkg/controller"
1615
"github.com/deis/builder/pkg/git"
1716
"github.com/deis/builder/pkg/k8s"
@@ -62,7 +61,7 @@ func build(
6261

6362
slugBuilderImagePullPolicy, err := k8s.PullPolicyFromString(conf.SlugBuilderImagePullPolicy)
6463
if err != nil {
65-
return nil
64+
return err
6665
}
6766

6867
repo := conf.Repository
@@ -91,7 +90,7 @@ func build(
9190
}
9291
}()
9392

94-
client, err := controller.New(conf.ControllerHost, conf.ControllerPort, builderconf.BuilderKeyLocation)
93+
client, err := controller.New(conf.ControllerHost, conf.ControllerPort)
9594
if err != nil {
9695
return err
9796
}

0 commit comments

Comments
 (0)