| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919 |
- package kubernetes_test
- import (
- "reflect"
- "strings"
- "testing"
- "github.com/porter-dev/porter/internal/kubernetes"
- "github.com/porter-dev/porter/internal/models"
- "k8s.io/client-go/tools/clientcmd"
- )
- type kubeConfigTest struct {
- msg string
- raw []byte
- allowedContexts []string
- expected []models.Context
- }
- type kubeConfigTestValidateError struct {
- msg string
- raw []byte
- allowedContexts []string
- contextName string
- errorContains string // a string that the error message should contain
- }
- var ValidateErrorTests = []kubeConfigTestValidateError{
- kubeConfigTestValidateError{
- msg: "No configuration",
- raw: []byte(""),
- allowedContexts: []string{},
- contextName: "",
- errorContains: "invalid configuration: no configuration has been provided",
- },
- kubeConfigTestValidateError{
- msg: "Context name does not exist",
- raw: []byte(noContexts),
- allowedContexts: []string{"porter-test-1"},
- contextName: "context-test",
- errorContains: "invalid configuration: context was not found for specified context: context-test",
- },
- kubeConfigTestValidateError{
- msg: "Cluster to join does not exist",
- raw: []byte(noClusters),
- allowedContexts: []string{"porter-test-1"},
- contextName: "context-test",
- errorContains: "invalid configuration: context was not found for specified context: context-test",
- },
- kubeConfigTestValidateError{
- msg: "User to join does not exist",
- raw: []byte(noUsers),
- allowedContexts: []string{"porter-test-1"},
- contextName: "context-test",
- errorContains: "invalid configuration: context was not found for specified context: context-test",
- },
- }
- func TestValidateErrors(t *testing.T) {
- for _, c := range ValidateErrorTests {
- _, err := kubernetes.GetRestrictedClientConfigFromBytes(c.raw, c.contextName, c.allowedContexts)
- if err == nil {
- t.Fatalf("Testing %s did not return an error\n", c.msg)
- }
- if !strings.Contains(err.Error(), c.errorContains) {
- t.Errorf("Testing %s -- Error was:\n \"%s\" \n It did not contain string \"%s\"\n", c.msg, err.Error(), c.errorContains)
- }
- }
- }
- var BasicContextAllowedTests = []kubeConfigTest{
- kubeConfigTest{
- msg: "basic test",
- raw: []byte(basic),
- allowedContexts: []string{"context-test"},
- expected: []models.Context{
- models.Context{
- Name: "context-test",
- Server: "https://localhost",
- Cluster: "cluster-test",
- User: "test-admin",
- Selected: true,
- },
- },
- },
- }
- func TestBasicAllowed(t *testing.T) {
- for _, c := range BasicContextAllowedTests {
- res, err := kubernetes.GetContextsFromBytes(c.raw, c.allowedContexts)
- if err != nil {
- t.Fatalf("Testing %s returned an error: %v\n", c.msg, err.Error())
- }
- isEqual := reflect.DeepEqual(c.expected, res)
- if !isEqual {
- t.Errorf("Testing: %s, Expected: %v, Got: %v\n", c.msg, c.expected, res)
- }
- }
- }
- var BasicContextAllTests = []kubeConfigTest{
- kubeConfigTest{
- msg: "basic test",
- raw: []byte(basic),
- allowedContexts: []string{},
- expected: []models.Context{
- models.Context{
- Name: "context-test",
- Server: "https://localhost",
- Cluster: "cluster-test",
- User: "test-admin",
- Selected: false,
- },
- },
- },
- }
- func TestBasicAll(t *testing.T) {
- for _, c := range BasicContextAllTests {
- res, err := kubernetes.GetContextsFromBytes(c.raw, c.allowedContexts)
- if err != nil {
- t.Fatalf("Testing %s returned an error: %v\n", c.msg, err.Error())
- }
- isEqual := reflect.DeepEqual(c.expected, res)
- if !isEqual {
- t.Errorf("Testing: %s, Expected: %v, Got: %v\n", c.msg, c.expected, res)
- }
- }
- }
- func TestGetRestrictedClientConfig(t *testing.T) {
- contexts := []string{"context-test"}
- contextName := "context-test"
- clientConf, err := kubernetes.GetRestrictedClientConfigFromBytes([]byte(basic), contextName, contexts)
- if err != nil {
- t.Fatalf("Fatal error: %s\n", err.Error())
- }
- rawConf, err := clientConf.RawConfig()
- if err != nil {
- t.Fatalf("Fatal error: %s\n", err.Error())
- }
- if cluster, clusterFound := rawConf.Clusters["cluster-test"]; !clusterFound || cluster.Server != "https://localhost" {
- t.Errorf("invalid cluster returned")
- }
- if _, contextFound := rawConf.Contexts["context-test"]; !contextFound {
- t.Errorf("invalid context returned")
- }
- if _, authInfoFound := rawConf.AuthInfos["test-admin"]; !authInfoFound {
- t.Errorf("invalid auth info returned")
- }
- }
- type saCandidatesTest struct {
- name string
- raw []byte
- expected []*models.ServiceAccountCandidate
- }
- var SACandidatesTests = []saCandidatesTest{
- saCandidatesTest{
- name: "test without cluster ca data",
- raw: []byte(ClusterCAWithoutData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-cluster-ca-data",
- Resolved: false,
- Filename: "/fake/path/to/ca.pem",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.X509,
- Kubeconfig: []byte(ClusterCAWithoutData),
- },
- },
- },
- saCandidatesTest{
- name: "x509 test with cert and key data",
- raw: []byte(x509WithData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{},
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.X509,
- Kubeconfig: []byte(x509WithData),
- },
- },
- },
- saCandidatesTest{
- name: "x509 test without cert data",
- raw: []byte(x509WithoutCertData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-client-cert-data",
- Resolved: false,
- Filename: "/fake/path/to/cert.pem",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.X509,
- Kubeconfig: []byte(x509WithoutCertData),
- },
- },
- },
- saCandidatesTest{
- name: "x509 test without key data",
- raw: []byte(x509WithoutKeyData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-client-key-data",
- Resolved: false,
- Filename: "/fake/path/to/key.pem",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.X509,
- Kubeconfig: []byte(x509WithoutKeyData),
- },
- },
- },
- saCandidatesTest{
- name: "x509 test without cert and key data",
- raw: []byte(x509WithoutCertAndKeyData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-client-cert-data",
- Resolved: false,
- Filename: "/fake/path/to/cert.pem",
- },
- models.ServiceAccountAction{
- Name: "upload-client-key-data",
- Resolved: false,
- Filename: "/fake/path/to/key.pem",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.X509,
- Kubeconfig: []byte(x509WithoutCertAndKeyData),
- },
- },
- },
- saCandidatesTest{
- name: "bearer token test with data",
- raw: []byte(BearerTokenWithData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{},
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.Bearer,
- Kubeconfig: []byte(BearerTokenWithData),
- },
- },
- },
- saCandidatesTest{
- name: "bearer token test without data",
- raw: []byte(BearerTokenWithoutData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-token-data",
- Resolved: false,
- Filename: "/path/to/token/file.txt",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.Bearer,
- Kubeconfig: []byte(BearerTokenWithoutData),
- },
- },
- },
- saCandidatesTest{
- name: "gcp test",
- raw: []byte(GCPPlugin),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-gcp-key-data",
- Resolved: false,
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.GCP,
- Kubeconfig: []byte(GCPPlugin),
- },
- },
- },
- saCandidatesTest{
- name: "aws iam authenticator test",
- raw: []byte(AWSIamAuthenticatorExec),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-aws-data",
- Resolved: false,
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.AWS,
- Kubeconfig: []byte(AWSIamAuthenticatorExec),
- },
- },
- },
- saCandidatesTest{
- name: "aws eks get-token test",
- raw: []byte(AWSEKSGetTokenExec),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-aws-data",
- Resolved: false,
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.AWS,
- Kubeconfig: []byte(AWSEKSGetTokenExec),
- },
- },
- },
- saCandidatesTest{
- name: "oidc without ca data",
- raw: []byte(OIDCAuthWithoutData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{
- models.ServiceAccountAction{
- Name: "upload-oidc-idp-issuer-ca-data",
- Resolved: false,
- Filename: "/fake/path/to/ca.pem",
- },
- },
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.OIDC,
- Kubeconfig: []byte(OIDCAuthWithoutData),
- },
- },
- },
- saCandidatesTest{
- name: "oidc with ca data",
- raw: []byte(OIDCAuthWithData),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{},
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.OIDC,
- Kubeconfig: []byte(OIDCAuthWithData),
- },
- },
- },
- saCandidatesTest{
- name: "basic auth test",
- raw: []byte(BasicAuth),
- expected: []*models.ServiceAccountCandidate{
- &models.ServiceAccountCandidate{
- Actions: []models.ServiceAccountAction{},
- Kind: "connector",
- ClusterName: "cluster-test",
- ClusterEndpoint: "https://localhost",
- AuthMechanism: models.Basic,
- Kubeconfig: []byte(BasicAuth),
- },
- },
- },
- }
- func TestGetServiceAccountCandidates(t *testing.T) {
- for _, c := range SACandidatesTests {
- result, err := kubernetes.GetServiceAccountCandidates(c.raw)
- if err != nil {
- t.Fatalf("error occurred %v\n", err)
- }
- // make result into a map so it's easier to compare
- resMap := make(map[string]*models.ServiceAccountCandidate)
- for _, res := range result {
- resMap[res.Kind+"-"+res.ClusterEndpoint+"-"+res.AuthMechanism] = res
- }
- for _, exp := range c.expected {
- res, ok := resMap[exp.Kind+"-"+exp.ClusterEndpoint+"-"+exp.AuthMechanism]
- if !ok {
- t.Fatalf("%s failed: no matching result for %s\n", c.name,
- exp.Kind+"-"+exp.ClusterEndpoint+"-"+exp.AuthMechanism)
- }
- // compare basic string fields
- if exp.AuthMechanism != res.AuthMechanism {
- t.Errorf("%s failed on auth mechanism: expected %s, got %s\n",
- c.name, exp.AuthMechanism, res.AuthMechanism)
- }
- if exp.ClusterName != res.ClusterName {
- t.Errorf("%s failed on cluster name: expected %s, got %s\n",
- c.name, exp.ClusterName, res.ClusterName)
- }
- if exp.ClusterEndpoint != res.ClusterEndpoint {
- t.Errorf("%s failed on cluster endpoint: expected %s, got %s\n",
- c.name, exp.ClusterEndpoint, res.ClusterEndpoint)
- }
- if len(res.Actions) != len(exp.Actions) {
- t.Errorf("%s failed on action names: expected length %d, got length %d\n",
- c.name, len(res.Actions), len(exp.Actions))
- } else {
- for i, action := range exp.Actions {
- if res.Actions[i].Name != action.Name {
- t.Errorf("%s failed on action names: expected res to contain %s, got %s\n",
- c.name, action.Name, res.Actions[i].Name)
- }
- if res.Actions[i].Filename != action.Filename {
- t.Errorf("%s failed on action file names: expected res to contain %s, got %s\n",
- c.name, action.Filename, res.Actions[i].Filename)
- }
- }
- }
- // compare kubeconfig by transforming into a client config
- resConfig, _ := clientcmd.NewClientConfigFromBytes(res.Kubeconfig)
- expConfig, err := clientcmd.NewClientConfigFromBytes(exp.Kubeconfig)
- if err != nil {
- t.Fatalf("config from bytes, error occurred %v\n", err)
- }
- resRawConf, _ := resConfig.RawConfig()
- expRawConf, err := expConfig.RawConfig()
- if err != nil {
- t.Fatalf("raw config conversion, error occurred %v\n", err)
- }
- if !reflect.DeepEqual(resRawConf, expRawConf) {
- t.Errorf("%s failed: expected %v, got %v\n", c.name, expRawConf, resRawConf)
- }
- }
- }
- }
- func TestAWSClusterIDGuess(t *testing.T) {
- result, err := kubernetes.GetServiceAccountCandidates([]byte(AWSIamAuthenticatorExec))
- if err != nil {
- t.Fatalf("error occurred %v\n", err)
- }
- if len(result) != 1 {
- t.Fatalf("result length was not 1\n")
- }
- if result[0].AWSClusterIDGuess != "cluster-test-aws-id-guess" {
- t.Errorf("Guess AWS cluster id failed: expected %s, got %s\n", "cluster-test-aws-id-guess", result[0].AWSClusterIDGuess)
- }
- result, err = kubernetes.GetServiceAccountCandidates([]byte(AWSEKSGetTokenExec))
- if err != nil {
- t.Fatalf("error occurred %v\n", err)
- }
- if len(result) != 1 {
- t.Fatalf("result length was not 1\n")
- }
- if result[0].AWSClusterIDGuess != "cluster-test-aws-id-guess" {
- t.Errorf("Guess AWS cluster id failed: expected %s, got %s\n", "cluster-test-aws-id-guess", result[0].AWSClusterIDGuess)
- }
- }
- const noContexts string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- clusters:
- - cluster:
- server: https://localhost
- name: porter-test-1
- current-context: context-test
- users:
- - name: test-admin
- user:
- `
- const noClusters string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- contexts:
- - context:
- cluster: porter-test-1
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- `
- const noUsers string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: default
- clusters:
- - cluster:
- server: https://localhost
- name: porter-test-1
- contexts:
- - context:
- cluster: porter-test-1
- user: test-admin
- name: context-test
- `
- const noContextClusters string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: default
- clusters:
- - cluster:
- server: https://localhost
- name: porter-test-1
- contexts:
- - context:
- # cluster: porter-test-1
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- `
- const noContextUsers string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: default
- clusters:
- - cluster:
- server: https://localhost
- name: porter-test-1
- contexts:
- - context:
- cluster: porter-test-1
- # user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- `
- const basic string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- `
- const ClusterCAWithoutData string = `
- apiVersion: v1
- kind: Config
- clusters:
- - name: cluster-test
- cluster:
- server: https://localhost
- certificate-authority: /fake/path/to/ca.pem
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- client-certificate-data: LS0tLS1CRUdJTiBDRVJ=
- client-key-data: LS0tLS1CRUdJTiBDRVJ=
- current-context: context-test
- `
- const x509WithData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- client-certificate-data: LS0tLS1CRUdJTiBDRVJ=
- client-key-data: LS0tLS1CRUdJTiBDRVJ=
- `
- const x509WithoutCertData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- client-certificate: /fake/path/to/cert.pem
- client-key-data: LS0tLS1CRUdJTiBDRVJ=
- `
- const x509WithoutKeyData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- client-certificate-data: LS0tLS1CRUdJTiBDRVJ=
- client-key: /fake/path/to/key.pem
- `
- const x509WithoutCertAndKeyData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- client-certificate: /fake/path/to/cert.pem
- client-key: /fake/path/to/key.pem
- `
- const BearerTokenWithData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- token: LS0tLS1CRUdJTiBDRVJ=
- `
- const BearerTokenWithoutData string = `
- apiVersion: v1
- kind: Config
- preferences: {}
- current-context: context-test
- clusters:
- - cluster:
- server: https://localhost
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- users:
- - name: test-admin
- user:
- tokenFile: /path/to/token/file.txt
- `
- const GCPPlugin string = `
- apiVersion: v1
- kind: Config
- clusters:
- - name: cluster-test
- cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- users:
- - name: test-admin
- user:
- auth-provider:
- name: gcp
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- `
- const AWSIamAuthenticatorExec = `
- apiVersion: v1
- clusters:
- - cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- kind: Config
- preferences: {}
- users:
- - name: test-admin
- user:
- exec:
- apiVersion: client.authentication.k8s.io/v1alpha1
- command: aws-iam-authenticator
- args:
- - "token"
- - "-i"
- - "cluster-test-aws-id-guess"
- `
- const AWSEKSGetTokenExec = `
- apiVersion: v1
- clusters:
- - cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- kind: Config
- preferences: {}
- users:
- - name: test-admin
- user:
- exec:
- apiVersion: client.authentication.k8s.io/v1alpha1
- command: aws
- args:
- - "eks"
- - "get-token"
- - "--cluster-name"
- - "cluster-test-aws-id-guess"
- `
- const OIDCAuthWithoutData = `
- apiVersion: v1
- clusters:
- - cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- kind: Config
- preferences: {}
- users:
- - name: test-admin
- user:
- auth-provider:
- config:
- client-id: porter-api
- id-token: token
- idp-issuer-url: https://localhost
- idp-certificate-authority: /fake/path/to/ca.pem
- name: oidc
- `
- const OIDCAuthWithData = `
- apiVersion: v1
- clusters:
- - cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- kind: Config
- preferences: {}
- users:
- - name: test-admin
- user:
- auth-provider:
- config:
- client-id: porter-api
- id-token: token
- idp-issuer-url: https://localhost
- idp-certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: oidc
- `
- const BasicAuth = `
- apiVersion: v1
- clusters:
- - cluster:
- server: https://localhost
- certificate-authority-data: LS0tLS1CRUdJTiBDRVJ=
- name: cluster-test
- contexts:
- - context:
- cluster: cluster-test
- user: test-admin
- name: context-test
- current-context: context-test
- kind: Config
- preferences: {}
- users:
- - name: test-admin
- user:
- username: admin
- password: changeme
- `
|