| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- 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 auth
- import (
- "context"
- "testing"
- "github.com/stretchr/testify/assert"
- authv1 "k8s.io/api/authentication/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- k8sv1 "k8s.io/client-go/kubernetes/typed/core/v1"
- )
- func TestTokenFetcher(t *testing.T) {
- tf := &authTokenFetcher{
- ServiceAccount: "foobar",
- Namespace: "example",
- k8sClient: &mockK8sV1{},
- }
- token, err := tf.FetchToken(context.Background())
- assert.Nil(t, err)
- assert.Equal(t, []byte("FAKETOKEN"), token)
- }
- // Mock K8s client for creating tokens.
- type mockK8sV1 struct {
- k8sv1.CoreV1Interface
- }
- func (m *mockK8sV1) ServiceAccounts(namespace string) k8sv1.ServiceAccountInterface {
- return &mockK8sV1SA{v1mock: m}
- }
- // Mock the K8s service account client.
- type mockK8sV1SA struct {
- k8sv1.ServiceAccountInterface
- v1mock *mockK8sV1
- }
- func (ma *mockK8sV1SA) CreateToken(
- ctx context.Context,
- serviceAccountName string,
- tokenRequest *authv1.TokenRequest,
- opts metav1.CreateOptions,
- ) (*authv1.TokenRequest, error) {
- return &authv1.TokenRequest{
- Status: authv1.TokenRequestStatus{
- Token: "FAKETOKEN",
- },
- }, nil
- }
|