@@ -18,6 +18,7 @@ package mockkubeapiserver
18
18
19
19
import (
20
20
"context"
21
+ "encoding/base64"
21
22
"fmt"
22
23
"io"
23
24
"net/http"
@@ -69,8 +70,42 @@ func (req *postResource) Run(ctx context.Context, s *MockKubeAPIServer) error {
69
70
return fmt .Errorf ("name must be provided in payload" )
70
71
}
71
72
73
+ if err := preCreateHook (ctx , obj ); err != nil {
74
+ return err
75
+ }
76
+
72
77
if err := resource .CreateObject (ctx , id , obj ); err != nil {
73
78
return err
74
79
}
75
80
return req .writeResponse (obj )
76
81
}
82
+
83
+ func preCreateHook (ctx context.Context , obj * unstructured.Unstructured ) error {
84
+ gvk := obj .GroupVersionKind ()
85
+ if gvk .Group == "" && gvk .Version == "v1" && gvk .Kind == "Secret" {
86
+ stringDataAny , found := obj .Object ["stringData" ]
87
+ if found {
88
+ stringDataMap , ok := stringDataAny .(map [string ]any )
89
+ if ! ok {
90
+ return fmt .Errorf ("unexpected type for v1.Secret stringData, got %T" , stringDataAny )
91
+ }
92
+ dataAny , dataFound := obj .Object ["data" ]
93
+ if ! dataFound {
94
+ dataAny = make (map [string ]any )
95
+ obj .Object ["data" ] = dataAny
96
+ }
97
+ dataMap , ok := dataAny .(map [string ]any )
98
+ if ! ok {
99
+ return fmt .Errorf ("unexpected type for v1.Secret data, got %T" , dataAny )
100
+ }
101
+ for k , vAny := range stringDataMap {
102
+ v , ok := vAny .(string )
103
+ if ! ok {
104
+ return fmt .Errorf ("unexpected type for v1.Secret stringData entry, got %T" , vAny )
105
+ }
106
+ dataMap [k ] = base64 .StdEncoding .EncodeToString ([]byte (v ))
107
+ }
108
+ }
109
+ }
110
+ return nil
111
+ }
0 commit comments