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