mirror of https://github.com/knative/client.git
161 lines
5.0 KiB
Go
161 lines
5.0 KiB
Go
// Copyright © 2021 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 implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package domain
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
"gotest.tools/v3/assert"
|
|
"gotest.tools/v3/assert/cmp"
|
|
|
|
"knative.dev/client/pkg/serving/v1beta1"
|
|
"knative.dev/client/pkg/util"
|
|
"knative.dev/pkg/apis"
|
|
duckv1 "knative.dev/pkg/apis/duck/v1"
|
|
servingv1beta1 "knative.dev/serving/pkg/apis/serving/v1beta1"
|
|
)
|
|
|
|
func TestDomainMappingDescribe(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
servingRecorder.GetDomainMapping("foo.bar", getDomainMapping(), nil)
|
|
|
|
out, err := executeDomainCommand(client, nil, "describe", "foo.bar")
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, cmp.Regexp("Name:\\s+foo.bar", out))
|
|
assert.Assert(t, cmp.Regexp("Namespace:\\s+default", out))
|
|
assert.Assert(t, util.ContainsAll(out, "URL:", "http://foo.bar"))
|
|
assert.Assert(t, cmp.Regexp("Reference:", out))
|
|
assert.Assert(t, cmp.Regexp("Kind:\\s+Service", out))
|
|
assert.Assert(t, cmp.Regexp("Name:\\s+foo", out))
|
|
assert.Assert(t, util.ContainsAll(out, "Conditions:", "Ready"))
|
|
|
|
// There're 2 empty lines used in the "describe" formatting
|
|
lineCounter := 0
|
|
for _, line := range strings.Split(strings.TrimSpace(out), "\n") {
|
|
if line == "" {
|
|
lineCounter++
|
|
}
|
|
}
|
|
assert.Equal(t, lineCounter, 3)
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func TestDomainMappingDescribeDiffNamespace(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
servingRecorder.GetDomainMapping("foo.bar", getDomainMapping("otherNS"), nil)
|
|
|
|
out, err := executeDomainCommand(client, nil, "describe", "foo.bar")
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, cmp.Regexp("Name:\\s+foo.bar", out))
|
|
assert.Assert(t, cmp.Regexp("Namespace:\\s+default", out))
|
|
assert.Assert(t, util.ContainsAll(out, "URL:", "http://foo.bar"))
|
|
assert.Assert(t, cmp.Regexp("Reference:", out))
|
|
assert.Assert(t, cmp.Regexp("Kind:\\s+Service", out))
|
|
assert.Assert(t, cmp.Regexp("Name:\\s+foo", out))
|
|
assert.Assert(t, cmp.Regexp("Namespace:\\s+otherNS", out))
|
|
assert.Assert(t, util.ContainsAll(out, "Conditions:", "Ready"))
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func TestDomainMappingDescribeError(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
servingRecorder.GetDomainMapping("foo.bar", getDomainMapping(), errors.New("domainmappings.serving.knative.dev 'foo.bar' not found"))
|
|
|
|
_, err := executeDomainCommand(client, nil, "describe", "foo.bar")
|
|
assert.ErrorContains(t, err, "foo", "not found")
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func TestDomainMappingDescribeNameError(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
|
|
_, err := executeDomainCommand(client, nil, "describe")
|
|
assert.Assert(t, err != nil)
|
|
assert.Assert(t, util.ContainsAll(err.Error(), "name", "single", "argument"))
|
|
|
|
servingRecorder.Validate()
|
|
|
|
_, err = executeDomainCommand(client, nil, "describe", "foo", "bar")
|
|
assert.Assert(t, err != nil)
|
|
assert.Assert(t, util.ContainsAll(err.Error(), "name", "single", "argument"))
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func TestDomainMappingDescribeURL(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
servingRecorder.GetDomainMapping("foo.bar", getDomainMapping(), nil)
|
|
|
|
out, err := executeDomainCommand(client, nil, "describe", "foo.bar", "-o", "url")
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, util.ContainsAll(out, "http://foo.bar"))
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func TestDomainMappingDescribeYAML(t *testing.T) {
|
|
client := v1beta1.NewMockKnServiceClient(t)
|
|
|
|
servingRecorder := client.Recorder()
|
|
servingRecorder.GetDomainMapping("foo.bar", getDomainMapping(), nil)
|
|
|
|
out, err := executeDomainCommand(client, nil, "describe", "foo.bar", "-o", "yaml")
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, util.ContainsAll(out, "kind: DomainMapping", "spec:", "status:", "metadata:"))
|
|
|
|
servingRecorder.Validate()
|
|
}
|
|
|
|
func getDomainMapping(ns ...string) *servingv1beta1.DomainMapping {
|
|
serviceNamespace := "default"
|
|
if len(ns) == 1 {
|
|
serviceNamespace = ns[0]
|
|
}
|
|
dm := createDomainMapping("foo.bar", createServiceRef("foo", serviceNamespace), "")
|
|
dm.TypeMeta = v1.TypeMeta{
|
|
Kind: "DomainMapping",
|
|
APIVersion: servingv1beta1.SchemeGroupVersion.String(),
|
|
}
|
|
dm.Status = servingv1beta1.DomainMappingStatus{
|
|
Status: duckv1.Status{
|
|
Conditions: duckv1.Conditions{
|
|
apis.Condition{
|
|
Type: "Ready",
|
|
Status: "True",
|
|
},
|
|
},
|
|
},
|
|
URL: &apis.URL{Scheme: "http", Host: "foo.bar"},
|
|
}
|
|
return dm
|
|
}
|