Skip to content

Commit

Permalink
Add E2E test for "kn source binding" commands
Browse files Browse the repository at this point in the history
Fixes #631

* Add E2E test for "kn source binding" commands.
* Fix typo.
  • Loading branch information
MIBc committed Feb 4, 2020
1 parent d82d557 commit 1ffa16d
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 3 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@

| 🐛
| Show envFrom when running describe service or revision
| https://github.com/knative/client/pull/630
| https://github.com/knative/client/pull/630[#630]

| 🎁
| Add E2E test for `kn source binding` commands
| https://github.com/knative/client/pull/631[#631]

## v0.12.0 (2020-01-29)

Expand Down
2 changes: 1 addition & 1 deletion docs/cmd/kn_source_binding_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ kn source binding create NAME --subject SCHEDULE --sink SINK --ce-override KEY=V
```
# Create a sink binding which connects a deployment 'myapp' with a Knative service 'mysvc'
kn source binding create my-binding --subject Deployemnt:apps/v1:myapp --sink svc:mysvc
kn source binding create my-binding --subject Deployment:apps/v1:myapp --sink svc:mysvc
```

### Options
Expand Down
2 changes: 1 addition & 1 deletion pkg/kn/commands/source/binding/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func NewBindingCreateCommand(p *commands.KnParams) *cobra.Command {
Short: "Create a sink binding.",
Example: `
# Create a sink binding which connects a deployment 'myapp' with a Knative service 'mysvc'
kn source binding create my-binding --subject Deployemnt:apps/v1:myapp --sink svc:mysvc`,
kn source binding create my-binding --subject Deployment:apps/v1:myapp --sink svc:mysvc`,

RunE: func(cmd *cobra.Command, args []string) (err error) {
if len(args) != 1 {
Expand Down
73 changes: 73 additions & 0 deletions test/e2e/source_binding_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Copyright 2019 The Knative Authors

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at

// http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or im
// See the License for the specific language governing permissions and
// limitations under the License.

// +build e2e
// +build !serving

package e2e

import (
"strings"
"testing"

"gotest.tools/assert"
"knative.dev/client/pkg/util"
)

func TestSourceBinding(t *testing.T) {
t.Parallel()
test := NewE2eTest(t)
test.Setup(t)
defer test.Teardown(t)

test.serviceCreate(t, "testsvc0")

t.Run("create source binding", func(t *testing.T) {
test.sourceBindingCreate(t, "my-binding0", "Deployment:apps/v1:myapp", "svc:testsvc0")
})

t.Run("delete source binding", func(t *testing.T) {
test.sourceBindingDelete(t, "my-binding0")
})

t.Run("update source binding", func(t *testing.T) {
test.sourceBindingCreate(t, "my-binding1", "Deployment:apps/v1:myapp", "svc:testsvc0")
test.serviceCreate(t, "testsvc1")
test.sourceBindingUpdate(t, "my-binding1", "Deployment:apps/v1:myapp", "svc:testsvc1")
out, err := test.kn.RunWithOpts([]string{"source", "binding", "describe", "my-binding1"}, runOpts{NoNamespace: false})
assert.NilError(t, err)
assert.Check(t, strings.Contains(out, "testsvc1"))
})

}

func (test *e2eTest) sourceBindingCreate(t *testing.T, bindingName string, subject string, sink string) {
out, err := test.kn.RunWithOpts([]string{"source", "binding", "create", bindingName,
"--subject", subject, "--sink", sink}, runOpts{NoNamespace: false})
assert.NilError(t, err)
assert.Check(t, util.ContainsAllIgnoreCase(out, "Sink", "binding", bindingName, "created", "namespace", test.kn.namespace))
}

func (test *e2eTest) sourceBindingDelete(t *testing.T, bindingName string) {
out, err := test.kn.RunWithOpts([]string{"source", "binding", "delete", bindingName}, runOpts{NoNamespace: false})
assert.NilError(t, err)
assert.Check(t, util.ContainsAllIgnoreCase(out, "Sink", "binding", bindingName, "deleted", "namespace", test.kn.namespace))
}

func (test *e2eTest) sourceBindingUpdate(t *testing.T, bindingName string, subject string, sink string) {
out, err := test.kn.RunWithOpts([]string{"source", "binding", "update", bindingName,
"--subject", subject, "--sink", sink}, runOpts{})
assert.NilError(t, err)
assert.Check(t, util.ContainsAll(out, bindingName, "updated", "namespace", test.kn.namespace))
}

0 comments on commit 1ffa16d

Please sign in to comment.