@@ -3,7 +3,6 @@ package action_test
33import (
44 "context"
55 "errors"
6- "net/http"
76 "testing"
87
98 "github.com/stretchr/testify/require"
@@ -74,104 +73,3 @@ func Test_ServiceAccountRestConfigMapper(t *testing.T) {
7473 })
7574 }
7675}
77-
78- func Test_SyntheticUserRestConfigMapper_Fails (t * testing.T ) {
79- for _ , tc := range []struct {
80- description string
81- obj client.Object
82- cfg * rest.Config
83- expectedError error
84- }{
85- {
86- description : "return error if object is nil" ,
87- cfg : & rest.Config {},
88- expectedError : errors .New ("object is nil" ),
89- }, {
90- description : "return error if cfg is nil" ,
91- obj : & ocv1.ClusterExtension {},
92- expectedError : errors .New ("rest config is nil" ),
93- }, {
94- description : "return error if object is not a ClusterExtension" ,
95- obj : & corev1.Secret {},
96- cfg : & rest.Config {},
97- expectedError : errors .New ("object is not a ClusterExtension" ),
98- },
99- } {
100- t .Run (tc .description , func (t * testing.T ) {
101- tokenGetter := & authentication.TokenGetter {}
102- saMapper := action .ServiceAccountRestConfigMapper (tokenGetter )
103- actualCfg , err := saMapper (context .Background (), tc .obj , tc .cfg )
104- if tc .expectedError != nil {
105- require .Nil (t , actualCfg )
106- require .EqualError (t , err , tc .expectedError .Error ())
107- } else {
108- require .NoError (t , err )
109- transport , err := rest .TransportFor (actualCfg )
110- require .NoError (t , err )
111- require .NotNil (t , transport )
112- tokenInjectionRoundTripper , ok := transport .(* authentication.TokenInjectingRoundTripper )
113- require .True (t , ok )
114- require .Equal (t , tokenGetter , tokenInjectionRoundTripper .TokenGetter )
115- require .Equal (t , types.NamespacedName {Name : "my-service-account" , Namespace : "my-namespace" }, tokenInjectionRoundTripper .Key )
116- }
117- })
118- }
119- }
120- func Test_SyntheticUserRestConfigMapper_UsesDefaultConfigMapper (t * testing.T ) {
121- isDefaultRequestMapperUsed := false
122- defaultServiceMapper := func (ctx context.Context , o client.Object , c * rest.Config ) (* rest.Config , error ) {
123- isDefaultRequestMapperUsed = true
124- return c , nil
125- }
126- syntheticAuthServiceMapper := action .SyntheticUserRestConfigMapper (defaultServiceMapper )
127- obj := & ocv1.ClusterExtension {
128- ObjectMeta : metav1.ObjectMeta {
129- Name : "my-clusterextension" ,
130- },
131- Spec : ocv1.ClusterExtensionSpec {
132- ServiceAccount : ocv1.ServiceAccountReference {
133- Name : "my-service-account" ,
134- },
135- Namespace : "my-namespace" ,
136- },
137- }
138- actualCfg , err := syntheticAuthServiceMapper (context .Background (), obj , & rest.Config {})
139- require .NoError (t , err )
140- require .NotNil (t , actualCfg )
141- require .True (t , isDefaultRequestMapperUsed )
142- }
143-
144- func Test_SyntheticUserRestConfigMapper_UsesSyntheticAuthMapper (t * testing.T ) {
145- syntheticAuthServiceMapper := action .SyntheticUserRestConfigMapper (func (ctx context.Context , o client.Object , c * rest.Config ) (* rest.Config , error ) {
146- return c , nil
147- })
148- obj := & ocv1.ClusterExtension {
149- ObjectMeta : metav1.ObjectMeta {
150- Name : "my-clusterextension" ,
151- },
152- Spec : ocv1.ClusterExtensionSpec {
153- ServiceAccount : ocv1.ServiceAccountReference {
154- Name : "olm.synthetic-user" ,
155- },
156- Namespace : "my-namespace" ,
157- },
158- }
159- actualCfg , err := syntheticAuthServiceMapper (context .Background (), obj , & rest.Config {})
160- require .NoError (t , err )
161- require .NotNil (t , actualCfg )
162-
163- // test that the impersonation headers are appropriately injected into the request
164- // by wrapping a fake round tripper around the returned configurations transport
165- // nolint:bodyclose
166- _ , _ = actualCfg .WrapTransport (fakeRoundTripper (func (req * http.Request ) (* http.Response , error ) {
167- require .Equal (t , "olm:clusterextension:my-clusterextension" , req .Header .Get ("Impersonate-User" ))
168- require .Equal (t , "olm:clusterextensions" , req .Header .Get ("Impersonate-Group" ))
169- return & http.Response {}, nil
170- })).RoundTrip (& http.Request {})
171- }
172-
173- type fakeRoundTripper func (req * http.Request ) (* http.Response , error )
174-
175- func (f fakeRoundTripper ) RoundTrip (request * http.Request ) (* http.Response , error ) {
176- return f (request )
177- }
0 commit comments