@@ -2,27 +2,92 @@ package auth
22
33import (
44 "context"
5- "encoding/base64"
65 "fmt"
6+ "net/http"
77 "testing"
88
99 . "github.com/onsi/gomega"
1010 "github.com/oracle/oci-native-ingress-controller/pkg/types"
11+ "github.com/oracle/oci-native-ingress-controller/pkg/util"
1112 v1 "k8s.io/api/core/v1"
12- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1 "
13+ fakeclientset "k8s.io/client-go/kubernetes/fake "
1314)
1415
1516const (
1617 PrivateKey = "SSLPrivateData = `-----BEGIN RSA PRIVATE KEY-----\n MIIEowIBAAKCAQEAyxPEO9rowYQ6/sjpD4VxnGdChokq4b8LyOcnIFRMueihl+8S\n apqbe96A3etQaMBANx2FcuFt9FcPSJaJU93i9hkw/FPa5d2+Kr7wgE3pwOPXPqOI\n xuaeQfUIZ4QcGNSs1utsSbj/i3RvJDgrUOI+RypT4erpQX2cQZ5tplaDd2SxBYWW\n yZUkVIRPXKyJm4Yft1CsKDtbEzzIdh69DlfyfWRDYWxfD9D/RflmDafbunXo1OC2\n UJ3MHi+tD2NxgCFVvOWiiE+BMD28e3mGVg6WvoFtcutahnvrFocHDWnoMK269AbI\n rZ1WuUKBxOlbWLz9XbbsxFYDskRqNk22GtrQ3QIDAQABAoIBACU1cfclnRAYElcs\n qMdXRAHMSbws1daXEqm08M5To9tMbI9SFqXBvktr8WC4BPusfhebKSBrfaIPcZVz\n P6ZGOZet9fPFyY3kmztp0Ncxb2sQVBf+Dsmi58xeATQ2WI+UKDcY27aGVwxOQS75\n u7YOPir77nKugB6nzUGYra6Um3H8hYNWTgWyiATb8Y0V4njCf8pAepGOptClyI1I\n i5fsEE6q52jbGeFRK2JTysG8ovABBdGYsS8XOUuZ+O/QktF/iFwFtMWdEur5tcOO\n RoPSrc/4H8pNpL7IhF0Iy/hpNoNsin7Gj4UBNi6dhrtcGz3zCGSKtldsootgSC2C\n KWd/rAECgYEA5sF6OZsLguVfCqmj3WiLM5I+YWC/HAmV9grb9puW35cQxfQegmdj\n InWk+rcotuFTBcTKjXDKT4C8vCZid2p0WnSWqLPWhPYg0p2awobZgjRy0HzvUgGJ\n /gWAEydzsUc8ojHrUBdJ2iyvjy+I8JWQcyQkBUGlPZj0IC5VUgODYD0CgYEA4Usg\n UCJqo35pLq0TmPSfUuMPzTV3StIft+r7S3g4HWpvrBQNKf6p96/Fjt2WaPhvAABB\n ww8Pg2B97iSqR6Rg4Ba4BQQEfHtWCHQ2NuNOoNkRLTJqOxREk7+741Qy9EwgeDJ6\n rQqgrde1dLJPZDzQpbFoCLkIkQ6CL3jTkyDenSECgYEAmvZ1STgoy9eTMsrnY2mw\n iYp9X9GjpYV+coOqYfrsn+yH9BfTYUli1qJgj4nuypmYsngMel2zTx6qIEQ6vez8\n hD5lapeSySmssyPp6Ra7/OeR7xbndI/aBn/VGYfV9shbHKUfXGK3Us/Nef+3G7Gl\n Ft2/XtRNzobn8rCK1Y/MaxUCgYB6RFpKAxOanS0aLsX2+bNJuX7G4KBYE8cw+i7d\n G2Zg2HW4jr1CMDov+M2fpjRNzZ34AyutX4wMwZ42UuGytcv5cXr3BeIlaI4dUmxl\n x2DRvFwtCjJK08oP4TtnuTdaC8KHWOXo6V6gWfPZXDfn73VQpwIN0dWLW7NdbhZs\n v6bw4QKBgEXYPIf827EVz0XU+1wkjaLt+G40J9sAPk/a6qybF33BBbBhjDxMnest\n ArGIjYo4IcYu5hzwnPy/B9WIFgz1iY31l01eP90zJ6q+xpCO5qSdSnjkfq1zrwzK\n Bs7B72+hgS7VwRowRUbNanaZIZt0ZAiwQWN1+Dh7Bj+VbSxc/fna\n -----END RSA PRIVATE KEY-----`"
1718 data = "IwojIE9DSSBOYXRpdmUgSW5ncmVzcyBDb250cm9sbGVyCiMKIyBDb3B5cmlnaHQgKGMpIDIwMjMgT3JhY2xlIEFtZXJpY2EsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgojIExpY2Vuc2VkIHVuZGVyIHRoZSBVbml2ZXJzYWwgUGVybWlzc2l2ZSBMaWNlbnNlIHYgMS4wIGFzIHNob3duIGF0IGh0dHBzOi8vb3NzLm9yYWNsZS5jb20vbGljZW5zZXMvdXBsLwojCmF1dGg6CiAgcmVnaW9uOiB1cy1hc2hidXJuLTEKICBwYXNzcGhyYXNlOiBwYXNzCiAgdXNlcjogb2NpZDEudXNlci5vYzEuLmFhYWFhYWFhX2V4YW1wbGUKICBmaW5nZXJwcmludDogNjc6ZDk6NzQ6NGI6MjE6ZXhhbXBsZQogIHRlbmFuY3k6IG9jaWQxLnRlbmFuY3kub2MxLi5hYWFhYWFhYV9leGFtcGxl"
1819)
1920
21+ func setUp (secret * v1.Secret , setClient bool ) * fakeclientset.Clientset {
22+ client := fakeclientset .NewSimpleClientset ()
23+ if setClient {
24+ action := "get"
25+ resource := "secrets"
26+ obj := secret
27+ util .FakeClientGetCall (client , action , resource , obj )
28+ }
29+ return client
30+ }
31+
32+ func TestGetConfigurationProviderSuccess (t * testing.T ) {
33+ RegisterTestingT (t )
34+ ctx := context .TODO ()
35+ opts := types.IngressOpts {
36+ AuthType : "user" ,
37+ AuthSecretName : "oci-config" ,
38+ }
39+ configName := "config"
40+ privateKey := "private-key"
41+ secret := util .GetSampleSecret (configName , privateKey , data , PrivateKey )
42+ client := setUp (secret , true )
43+
44+ auth , err := GetConfigurationProvider (ctx , opts , client )
45+ Expect (auth != nil ).Should (BeTrue ())
46+ Expect (err ).Should (BeNil ())
47+ }
48+
49+ func TestGetConfigurationProviderFailSecret (t * testing.T ) {
50+ RegisterTestingT (t )
51+ ctx := context .TODO ()
52+ opts := types.IngressOpts {
53+ AuthType : "user" ,
54+ AuthSecretName : "oci-config" ,
55+ }
56+ secret := util .GetSampleSecret ("test" , "error" , data , PrivateKey )
57+
58+ client := setUp (secret , false )
59+ auth , err := GetConfigurationProvider (ctx , opts , client )
60+ Expect (auth == nil ).Should (BeTrue ())
61+ Expect (err != nil ).Should (BeTrue ())
62+ Expect (err .Error ()).Should (Equal ("error retrieving secret: oci-config" ))
63+
64+ client = setUp (secret , true )
65+ auth , err = GetConfigurationProvider (ctx , opts , client )
66+ Expect (auth == nil ).Should (BeTrue ())
67+ Expect (err != nil ).Should (BeTrue ())
68+ Expect (err .Error ()).Should (Equal ("auth config data is empty: oci-config" ))
69+
70+ secret = util .GetSampleSecret ("config" , "error" , data , PrivateKey )
71+ client = setUp (secret , true )
72+ auth , err = GetConfigurationProvider (ctx , opts , client )
73+ Expect (auth == nil ).Should (BeTrue ())
74+ Expect (err != nil ).Should (BeTrue ())
75+ Expect (err .Error ()).Should (Equal ("missing auth config data: invalid user auth config data: oci-config" ))
76+
77+ secret = util .GetSampleSecret ("configs" , "error" , data , PrivateKey )
78+ client = setUp (secret , true )
79+ auth , err = GetConfigurationProvider (ctx , opts , client )
80+ Expect (auth == nil ).Should (BeTrue ())
81+ Expect (err != nil ).Should (BeTrue ())
82+ Expect (err .Error ()).Should (Equal ("auth config data is empty: oci-config" ))
83+ }
84+
2085func TestRetrieveAuthConfigInstanceAuthType (t * testing.T ) {
2186 RegisterTestingT (t )
2287 opts := types.IngressOpts {
2388 AuthType : "instance" ,
2489 }
25- cfg , err := RetrieveAuthConfig (context .TODO (), opts , "test" )
90+ cfg , err := RetrieveAuthConfig (context .TODO (), opts , "test" , nil )
2691 Expect (err == nil ).Should (BeTrue ())
2792 Expect (cfg .Type ).Should (Equal (types .Instance ))
2893
@@ -33,15 +98,17 @@ func TestRetrieveAuthConfigInstanceAuthTypeTestRetrieveAuthConfigInvalidAuthType
3398 opts := types.IngressOpts {
3499 AuthType : authType ,
35100 }
36- _ , err := RetrieveAuthConfig (context .TODO (), opts , "test" )
101+ _ , err := RetrieveAuthConfig (context .TODO (), opts , "test" , nil )
37102 Expect (err != nil ).Should (BeTrue ())
38103 Expect (err .Error ()).Should (Equal (fmt .Sprintf ("invalid auth principal type, %s" , authType )))
39104
40105}
41106
42107func TestParseAuthConfig (t * testing.T ) {
43108 RegisterTestingT (t )
44- secret := getSampleSecret ()
109+ configName := "config"
110+ privateKey := "private-key"
111+ secret := util .GetSampleSecret (configName , privateKey , data , PrivateKey )
45112 authCfg , err := ParseAuthConfig (secret , "oci-config" )
46113 Expect (err == nil ).Should (BeTrue ())
47114 Expect (authCfg .TenancyID ).Should (Equal ("ocid1.tenancy.oc1..aaaaaaaa_example" ))
@@ -52,17 +119,30 @@ func TestParseAuthConfig(t *testing.T) {
52119 Expect (err == nil ).Should (BeTrue ())
53120}
54121
55- func getSampleSecret () * v1.Secret {
56- dat , _ := base64 .StdEncoding .DecodeString (data )
57- secret := & v1.Secret {
58- ObjectMeta : metav1.ObjectMeta {
59- Namespace : "test" ,
60- Name : "oci-config" ,
61- },
62- Data : map [string ][]byte {
63- "config" : []byte (dat ),
64- "private-key" : []byte (PrivateKey ),
65- },
66- }
67- return secret
122+ func TestParseAuthConfigWithError (t * testing.T ) {
123+ RegisterTestingT (t )
124+ secret := util .GetSampleSecret ("error" , "" , data , PrivateKey )
125+ _ , err := ParseAuthConfig (secret , "oci-configs" )
126+ Expect (err != nil ).Should (BeTrue ())
127+ Expect (err .Error ()).Should (Equal ("invalid auth config data: oci-configs" ))
128+
129+ secret = util .GetSampleSecret ("config" , "" , data , PrivateKey )
130+ _ , err = ParseAuthConfig (secret , "oci-configs" )
131+ Expect (err != nil ).Should (BeTrue ())
132+ Expect (err .Error ()).Should (Equal ("invalid user auth config data: oci-configs" ))
133+
134+ }
135+
136+ func TestSetHTTPClientTimeout (t * testing.T ) {
137+ RegisterTestingT (t )
138+ timeout := setHTTPClientTimeout (httpClientTimeout )
139+ Expect (timeout != nil ).Should (Equal (true ))
140+ dis , err := timeout (& http.Client {})
141+ Expect (dis ).Should (Not (BeNil ()))
142+ Expect (err ).Should (BeNil ())
143+
144+ dis , err = timeout (nil )
145+ Expect (dis ).Should (BeNil ())
146+ Expect (err ).Should (Not (BeNil ()))
147+ Expect (err .Error ()).Should (Equal ("unable to modify unknown HTTP client type" ))
68148}
0 commit comments