@@ -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"
@@ -73,8 +74,42 @@ func (req *postResource) Run(ctx context.Context, s *MockKubeAPIServer) error {
73
74
obj .SetGeneration (1 )
74
75
}
75
76
77
+ if err := preCreateHook (ctx , obj ); err != nil {
78
+ return err
79
+ }
80
+
76
81
if err := resource .CreateObject (ctx , id , obj ); err != nil {
77
82
return err
78
83
}
79
84
return req .writeResponse (obj )
80
85
}
86
+
87
+ func preCreateHook (ctx context.Context , obj * unstructured.Unstructured ) error {
88
+ gvk := obj .GroupVersionKind ()
89
+ if gvk .Group == "" && gvk .Version == "v1" && gvk .Kind == "Secret" {
90
+ stringDataAny , found := obj .Object ["stringData" ]
91
+ if found {
92
+ stringDataMap , ok := stringDataAny .(map [string ]any )
93
+ if ! ok {
94
+ return fmt .Errorf ("unexpected type for v1.Secret stringData, got %T" , stringDataAny )
95
+ }
96
+ dataAny , dataFound := obj .Object ["data" ]
97
+ if ! dataFound {
98
+ dataAny = make (map [string ]any )
99
+ obj .Object ["data" ] = dataAny
100
+ }
101
+ dataMap , ok := dataAny .(map [string ]any )
102
+ if ! ok {
103
+ return fmt .Errorf ("unexpected type for v1.Secret data, got %T" , dataAny )
104
+ }
105
+ for k , vAny := range stringDataMap {
106
+ v , ok := vAny .(string )
107
+ if ! ok {
108
+ return fmt .Errorf ("unexpected type for v1.Secret stringData entry, got %T" , vAny )
109
+ }
110
+ dataMap [k ] = base64 .StdEncoding .EncodeToString ([]byte (v ))
111
+ }
112
+ }
113
+ }
114
+ return nil
115
+ }
0 commit comments