mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-18 08:09:58 +00:00
Test token output
Tested JSON, YAML, Go Template and Text token output formats.
This commit is contained in:
parent
766e2a45f8
commit
ba0c84ade8
@ -32,6 +32,9 @@ import (
|
|||||||
core "k8s.io/client-go/testing"
|
core "k8s.io/client-go/testing"
|
||||||
"k8s.io/client-go/tools/clientcmd"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
|
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
|
||||||
|
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
||||||
|
outputapiv1alpha1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha1"
|
||||||
|
"k8s.io/kubernetes/cmd/kubeadm/app/util/output"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -332,3 +335,125 @@ func TestRunDeleteTokens(t *testing.T) {
|
|||||||
t.Errorf("RunDeleteToken() succeeded for an invalid token: %v", err)
|
t.Errorf("RunDeleteToken() succeeded for an invalid token: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTokenOutput(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
id string
|
||||||
|
secret string
|
||||||
|
description string
|
||||||
|
usages []string
|
||||||
|
extraGroups []string
|
||||||
|
outputFormat string
|
||||||
|
expectedBytes []byte
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "JSON output",
|
||||||
|
id: "abcdef",
|
||||||
|
secret: "1234567890123456",
|
||||||
|
description: "valid bootstrap tooken",
|
||||||
|
usages: []string{"signing", "authentication"},
|
||||||
|
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
|
||||||
|
outputFormat: "json",
|
||||||
|
expectedBytes: []byte(`{
|
||||||
|
"kind": "BootstrapToken",
|
||||||
|
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
|
||||||
|
"creationTimestamp": null,
|
||||||
|
"token": "abcdef.1234567890123456",
|
||||||
|
"description": "valid bootstrap tooken",
|
||||||
|
"usages": [
|
||||||
|
"signing",
|
||||||
|
"authentication"
|
||||||
|
],
|
||||||
|
"groups": [
|
||||||
|
"system:bootstrappers:kubeadm:default-node-token"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "YAML output",
|
||||||
|
id: "abcdef",
|
||||||
|
secret: "1234567890123456",
|
||||||
|
description: "valid bootstrap tooken",
|
||||||
|
usages: []string{"signing", "authentication"},
|
||||||
|
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
|
||||||
|
outputFormat: "yaml",
|
||||||
|
expectedBytes: []byte(`apiVersion: output.kubeadm.k8s.io/v1alpha1
|
||||||
|
creationTimestamp: null
|
||||||
|
description: valid bootstrap tooken
|
||||||
|
groups:
|
||||||
|
- system:bootstrappers:kubeadm:default-node-token
|
||||||
|
kind: BootstrapToken
|
||||||
|
token: abcdef.1234567890123456
|
||||||
|
usages:
|
||||||
|
- signing
|
||||||
|
- authentication
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Go template output",
|
||||||
|
id: "abcdef",
|
||||||
|
secret: "1234567890123456",
|
||||||
|
description: "valid bootstrap tooken",
|
||||||
|
usages: []string{"signing", "authentication"},
|
||||||
|
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
|
||||||
|
outputFormat: "go-template={{println .token .description .usages .groups}}",
|
||||||
|
expectedBytes: []byte(`abcdef.1234567890123456 valid bootstrap tooken [signing authentication] [system:bootstrappers:kubeadm:default-node-token]
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "text output",
|
||||||
|
id: "abcdef",
|
||||||
|
secret: "1234567890123456",
|
||||||
|
description: "valid bootstrap tooken",
|
||||||
|
usages: []string{"signing", "authentication"},
|
||||||
|
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
|
||||||
|
outputFormat: "text",
|
||||||
|
expectedBytes: []byte(`TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
|
||||||
|
abcdef.1234567890123456 <forever> <never> signing,authentication valid bootstrap tooken system:bootstrappers:kubeadm:default-node-token
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "jsonpath output",
|
||||||
|
id: "abcdef",
|
||||||
|
secret: "1234567890123456",
|
||||||
|
description: "valid bootstrap tooken",
|
||||||
|
usages: []string{"signing", "authentication"},
|
||||||
|
extraGroups: []string{"system:bootstrappers:kubeadm:default-node-token"},
|
||||||
|
outputFormat: "jsonpath={.token} {.groups}",
|
||||||
|
expectedBytes: []byte(`abcdef.1234567890123456 [system:bootstrappers:kubeadm:default-node-token]`),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
token := outputapiv1alpha1.BootstrapToken{
|
||||||
|
BootstrapToken: kubeadmapiv1beta2.BootstrapToken{
|
||||||
|
Token: &kubeadmapiv1beta2.BootstrapTokenString{ID: tc.id, Secret: tc.secret},
|
||||||
|
Description: tc.description,
|
||||||
|
Usages: tc.usages,
|
||||||
|
Groups: tc.extraGroups,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
buf := bytes.NewBufferString("")
|
||||||
|
outputFlags := output.NewOutputFlags(&tokenTextPrintFlags{}).WithTypeSetter(outputapischeme.Scheme).WithDefaultOutput(tc.outputFormat)
|
||||||
|
printer, err := outputFlags.ToPrinter()
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("can't create printer for output format %s: %+v", tc.outputFormat, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := printer.PrintObj(&token, buf); err != nil {
|
||||||
|
t.Errorf("unable to print token %s: %+v", token.Token, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
actualBytes := buf.Bytes()
|
||||||
|
if !bytes.Equal(actualBytes, tc.expectedBytes) {
|
||||||
|
t.Errorf(
|
||||||
|
"failed TestTokenOutput:\n\nexpected:\n%s\n\nactual:\n%s",
|
||||||
|
string(tc.expectedBytes),
|
||||||
|
string(actualBytes),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user