mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-17 15:50:10 +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"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
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 (
|
||||
@ -332,3 +335,125 @@ func TestRunDeleteTokens(t *testing.T) {
|
||||
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