|
1 | 1 | package certsyncpod
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "bytes" |
5 |
| - "context" |
6 | 4 | "errors"
|
7 | 5 | "os"
|
8 | 6 | "path/filepath"
|
9 |
| - "sync" |
10 | 7 | "testing"
|
11 |
| - "time" |
12 | 8 |
|
13 | 9 | "github.com/google/go-cmp/cmp"
|
14 | 10 |
|
15 |
| - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
16 |
| - "k8s.io/apimachinery/pkg/util/wait" |
17 |
| - "k8s.io/apiserver/pkg/server/dynamiccertificates" |
18 |
| - |
19 | 11 | "github.com/openshift/library-go/pkg/operator/events/eventstesting"
|
| 12 | + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
20 | 13 | )
|
21 | 14 |
|
22 | 15 | func TestWriteFiles(t *testing.T) {
|
@@ -278,166 +271,3 @@ func failToWriteNth(writeFile writeFileFunc, n int) writeFileFunc {
|
278 | 271 | return writeFile(path, data, perm)
|
279 | 272 | }
|
280 | 273 | }
|
281 |
| - |
282 |
| -func TestDynamicCertificates(t *testing.T) { |
283 |
| - const typeName = "secret" |
284 |
| - om := metav1.ObjectMeta{ |
285 |
| - Namespace: "openshift-kube-apiserver", |
286 |
| - Name: "s1", |
287 |
| - } |
288 |
| - |
289 |
| - // Write the keypair into a secret directory. |
290 |
| - secretDir := filepath.Join(t.TempDir(), "secrets", om.Name) |
291 |
| - certFile := filepath.Join(secretDir, "tls.crt") |
292 |
| - keyFile := filepath.Join(secretDir, "tls.key") |
293 |
| - |
294 |
| - if err := os.MkdirAll(secretDir, 0700); err != nil { |
295 |
| - t.Fatalf("Failed to create secret directory %q: %v", secretDir, err) |
296 |
| - } |
297 |
| - if err := os.WriteFile(certFile, []byte(tlsCert), 0600); err != nil { |
298 |
| - t.Fatalf("Failed to write TLS certificate into %q: %v", certFile, err) |
299 |
| - } |
300 |
| - if err := os.WriteFile(keyFile, []byte(tlsKey), 0600); err != nil { |
301 |
| - t.Fatalf("Failed to write TLS key into %q: %v", keyFile, err) |
302 |
| - } |
303 |
| - |
304 |
| - // Start the watcher. |
305 |
| - // This reads the keypair synchronously so the initial state is loaded here. |
306 |
| - dc, err := dynamiccertificates.NewDynamicServingContentFromFiles("localhost TLS", certFile, keyFile) |
307 |
| - if err != nil { |
308 |
| - t.Fatalf("Failed to init dynamic certificate: %v", err) |
309 |
| - } |
310 |
| - |
311 |
| - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) |
312 |
| - var wg sync.WaitGroup |
313 |
| - wg.Add(1) |
314 |
| - go func() { |
315 |
| - defer wg.Done() |
316 |
| - dc.Run(ctx, 1) |
317 |
| - }() |
318 |
| - defer wg.Wait() |
319 |
| - defer cancel() |
320 |
| - |
321 |
| - // Poll until update detected. |
322 |
| - recorder := eventstesting.NewTestingEventRecorder(t) |
323 |
| - files := map[string]string{ |
324 |
| - "tls.crt": tlsCertUpdated, |
325 |
| - "tls.key": tlsKeyUpdated, |
326 |
| - } |
327 |
| - err = wait.PollUntilContextCancel(ctx, 250*time.Millisecond, true, func(ctx context.Context) (bool, error) { |
328 |
| - // Replace the secret directory. |
329 |
| - if err := writeFiles(&realFS, recorder, typeName, om, secretDir, files, 0600); err != nil { |
330 |
| - t.Errorf("Failed to write files: %v", err) |
331 |
| - return false, err |
332 |
| - } |
333 |
| - |
334 |
| - // Check the loaded content matches. |
335 |
| - // This is most probably updated based on write in a previous Poll invocation. |
336 |
| - cert, key := dc.CurrentCertKeyContent() |
337 |
| - return bytes.Equal(cert, []byte(tlsCertUpdated)) && bytes.Equal(key, []byte(tlsKeyUpdated)), nil |
338 |
| - }) |
339 |
| - if err != nil { |
340 |
| - t.Fatalf("Failed to wait for dynamic certificate: %v", err) |
341 |
| - } |
342 |
| -} |
343 |
| - |
344 |
| -const ( |
345 |
| - tlsCert = `-----BEGIN CERTIFICATE----- |
346 |
| -MIIDDzCCAfegAwIBAgIUNizZp8wiNCSTBiwtNLz2uS/UxJYwDQYJKoZIhvcNAQEL |
347 |
| -BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDkxODEyMDI1NFoXDTI1MTAx |
348 |
| -ODEyMDI1NFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF |
349 |
| -AAOCAQ8AMIIBCgKCAQEAwCFBu6vi5JqeCEHJvE97xdhlXX2BEgWS16ikEa6oGOBi |
350 |
| -Q0P1TdW+0GgQYRviuWq0/3Ql2GnrWlulVMZfVGDnwVJNjRvNbPUCOXieP8JIj79x |
351 |
| -Hua6tdwvin69kB6yvhMKPi6h5tmPDgxmcOAU/IZzSkm62kJ8ygJ7nlpD3VcBowj1 |
352 |
| -2nGQf3KVXG50YU+/2IFP8iaEj/KsCs1yd0oXlqHHELIWq+9scHYdA1pH+CqZC+u0 |
353 |
| -CKJKG2Umgj4cgby9ltOqOsmr2rMXVq5tle381tu9QGqEeJJ3TpnmCb9z5+TLdUAB |
354 |
| -jdBHQKiKXhhVpIKbDScsZ1rmVZ34t1jFFJlHFflqCQIDAQABo1kwVzAUBgNVHREE |
355 |
| -DTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMB |
356 |
| -MB0GA1UdDgQWBBSzdSuyIKFJtdCOA3nPtV/WJMhuNDANBgkqhkiG9w0BAQsFAAOC |
357 |
| -AQEAWhg6qUZ5l6qHx6OdhlekkVtmgAIplxtpMHbmCjMFcTA+qc1W56a6X/9fPRyy |
358 |
| -Wb/8B2biu2cQ9uoLiiZo+2VhnsmvbqeSWhAVPkTWf1ojDq3VmfK+y12rwX5t4VOv |
359 |
| -NdOJabSufjjmTGzjuNqD+6n43JRu42TCAgbMccdGQzHk9xIBRD7Ik886PYYe3E+G |
360 |
| -4Wha7/jMFaUF0z0FBqIKJbDPB51R2w8g5D5mR4Ylm9tRidxz39qfNHNEWPpp/pVH |
361 |
| -l5h1v53gThzzktCzKQKjgUTzUi4qvqnxRPxHgixfAbvvSYlC3+HizVSuK6j53t+k |
362 |
| -qdEbfjD2fIjpTY91oFX78tVdoA== |
363 |
| ------END CERTIFICATE----- |
364 |
| -` |
365 |
| - tlsKey = `-----BEGIN PRIVATE KEY----- |
366 |
| -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDAIUG7q+Lkmp4I |
367 |
| -Qcm8T3vF2GVdfYESBZLXqKQRrqgY4GJDQ/VN1b7QaBBhG+K5arT/dCXYaetaW6VU |
368 |
| -xl9UYOfBUk2NG81s9QI5eJ4/wkiPv3Ee5rq13C+Kfr2QHrK+Ewo+LqHm2Y8ODGZw |
369 |
| -4BT8hnNKSbraQnzKAnueWkPdVwGjCPXacZB/cpVcbnRhT7/YgU/yJoSP8qwKzXJ3 |
370 |
| -SheWoccQshar72xwdh0DWkf4KpkL67QIokobZSaCPhyBvL2W06o6yavasxdWrm2V |
371 |
| -7fzW271AaoR4kndOmeYJv3Pn5Mt1QAGN0EdAqIpeGFWkgpsNJyxnWuZVnfi3WMUU |
372 |
| -mUcV+WoJAgMBAAECggEAEMuXdHFtLzC4+d3OZdDI8B2fltGe09V65bFPTmBnP212 |
373 |
| -CY1KR1iVCqDeNa77XdwPIHmlyUpREaALTuLceILUH5kzQE+a4Jh2blG1+7rfHvnM |
374 |
| -SLhAwB8UZNX5ejzEwUrmzVLEQmroT4ET/3AHRZ/3OhpB5EyFnh8jcU9QuWuesAK0 |
375 |
| -biAfn67Vxc3AOUuzvQMqltgJSzc6MBUETyBmxUEXsGxpSw3Ma/ieMPs8hTS60aU3 |
376 |
| -TrzkgHD9mBTdpLpSYHmAXYJJOTylVcYYuTWzEoEjNJDTaZf/HiQTC93NZ/M2Kl6s |
377 |
| -kSwT+HaRDfU0BaBbjfPNSXwEUhSvd0JuEie7cpdAxQKBgQD7ivVizx9QUbQkJfkb |
378 |
| -OokCXo/Tjz5uqGq7gMvDdnl34PMju/tG/e+DHphEpetd5cDPg5nEpwhDe7ztbepn |
379 |
| -8UrDTV5RPkwNs9u9eskW8cmELsKjpoodMCXOeEaT3QeYA2fwe5A1X3ILSAPPZAOK |
380 |
| -0YKzr3S/7JSMCiD8+OlxrkPVywKBgQDDiMqFugvMUcDhgByj9aVitkfn3VXB/tGE |
381 |
| -D3DLLoHnt8MpehIbzkMeoDEqqz+K8ItHuOdPSA7dhqP2CG2zDBeWlVxlfZ7S1WMW |
382 |
| -YEwp2frdnLbCXwo93zc5Cje2XMnkU44GzPW1LdLTbY/PodkNAHa0F4LeayMBKsmH |
383 |
| -d7Oxu2rk+wKBgFWhOmPGqpxHFBHyM1kHljiORFv6uYAmKR9nevYxUKx0kZCqn6HN |
384 |
| -NEnokmFcMkGmwvphjGkbi36dkvUoo9F6nL7bia4SjQVlIvrf37DF4pny6SOYwA+r |
385 |
| -olMlMrGHXtxq3GlLRw5ETah1fYaOP350UBAnPJFRUkhR8mTrv1yJvGH9AoGAUPTL |
386 |
| -1P4ocFnQ4Axoz0GfTfVmZAtxvDZCjMjPzG/e/Q9KUFvoL3cAtydf8+ifEGlzYSif |
387 |
| -LGYLMZDTRcRLlvwEsCX68VJHdcc/lT4dip5jjWmbCXLMDL3kYUtnsatNM6mcfhhS |
388 |
| -CseEKGGOT0sVUJrGit3JI0l8XrlWYy4eShHsug0CgYBDTFYrnc8pSZn5SQwHVRkc |
389 |
| -hEW+WWdaTjmuaUx0I/ce4rocLHiO+bTM2hjYNL52xn62L2N7p+1wQBfChcI1wFbU |
390 |
| -w6An158oz0ldvlmxQk7CIyEoQNY+snSxOmZFXILDdp7mPbHhtavJj5vruY5VIHYs |
391 |
| -n4dXmvaEIZfo5M7UBlYW1A== |
392 |
| ------END PRIVATE KEY----- |
393 |
| -` |
394 |
| - tlsCertUpdated = `-----BEGIN CERTIFICATE----- |
395 |
| -MIIDDzCCAfegAwIBAgIUIcqFTfK2NxKU2YAyPdt/IL2TGl0wDQYJKoZIhvcNAQEL |
396 |
| -BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDkxODEyNDI1NloXDTI1MTAx |
397 |
| -ODEyNDI1NlowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF |
398 |
| -AAOCAQ8AMIIBCgKCAQEAlwJe+8tKBE/Q+epUKl7UI+R/8es0U11BuaQIF6iT0FvE |
399 |
| -DbEyFLAxvNPoE9m+Bu/wXivzkfEcXaxpHcDE6jA/A51TX/cDKwZAD6aMOovmG4b+ |
400 |
| -SJDTtbtRzZcEwyWqwK43cbK12O/D+TTV2/0lZYisA/EoAoWjGb6uY053xcBn6+Cf |
401 |
| -+6+cZ5slBizrIcY87U2a039hRBaAb/1Wss+Ogj22eYJotYxFeuptWhqKP4cvn6nZ |
402 |
| -r+HPaio/Eq2LRVb0tAzSuIATleo9k9443EnNB63TkgeW2RTTsFvSK6R7EWN4Kcdk |
403 |
| -ubxhPMuUyWgCsSEwYTu19BVrwBIlZjZpNETsqtbDbQIDAQABo1kwVzAUBgNVHREE |
404 |
| -DTALgglsb2NhbGhvc3QwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMB |
405 |
| -MB0GA1UdDgQWBBSkjhnvdVmMb+9DKQ4lQNmnwM1IHjANBgkqhkiG9w0BAQsFAAOC |
406 |
| -AQEAU0YlNhE0iaNJk/rvlXqkD/1O4b7pM8+aOHN54crVAgaA3fNZOcNelMuxPhFj |
407 |
| -mHpvM8L09wwlueVHudFier5g41mhgbkN7jsHZJlKG7ZjW5GJVggshn+bFmAYK/VS |
408 |
| -JSvJe+QcUMJeWANjbV3pMgg3Is/edhOMeJawvqHjSQMNT6qln4/9MgBTuSiEnpOh |
409 |
| -3MzmMXaFQLfFIDeuQY0dTM6Sx2Yn8EAmMuhjClLUdlPMskOk4vasqnbZuARp6bUe |
410 |
| -ZofmJ2YNG4PsXZQak7p6WSkt9HqGll7a9UBFSAI2O4a3D3MahdRNMcwi8LDzZr/y |
411 |
| -Vj72VewkK8yf+sPJ/nmkY/2j/w== |
412 |
| ------END CERTIFICATE----- |
413 |
| -` |
414 |
| - tlsKeyUpdated = `-----BEGIN PRIVATE KEY----- |
415 |
| -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXAl77y0oET9D5 |
416 |
| -6lQqXtQj5H/x6zRTXUG5pAgXqJPQW8QNsTIUsDG80+gT2b4G7/BeK/OR8RxdrGkd |
417 |
| -wMTqMD8DnVNf9wMrBkAPpow6i+Ybhv5IkNO1u1HNlwTDJarArjdxsrXY78P5NNXb |
418 |
| -/SVliKwD8SgChaMZvq5jTnfFwGfr4J/7r5xnmyUGLOshxjztTZrTf2FEFoBv/Vay |
419 |
| -z46CPbZ5gmi1jEV66m1aGoo/hy+fqdmv4c9qKj8SrYtFVvS0DNK4gBOV6j2T3jjc |
420 |
| -Sc0HrdOSB5bZFNOwW9IrpHsRY3gpx2S5vGE8y5TJaAKxITBhO7X0FWvAEiVmNmk0 |
421 |
| -ROyq1sNtAgMBAAECggEADbGaWW0C5kcypScZwMnepO6Yp6Bzm0euqR312edgmBlq |
422 |
| -Ou+hofykVgJFXl91ev2RJ4kGymo570iuM5OCh9YeML64i9BDikhD0OeCeeCr2j0w |
423 |
| -m/X+LNGyxlj2hpfI1zY1MutI0EZV2ChxaESZeo6dQrJAtZHWy4PeHoVEGTuscNhH |
424 |
| -FZSUjqnJxxYUIH5ypHF13yYE++BtTfUW0lKVoYjV1w8a/qKiJTLukZy452wFkJ6a |
425 |
| -pwOmZF0F5oxrhe8hdG6WP3CeGnr4Bv6OKSmBG3N/fNbEXfk7zMLiZo74hUYgrKfy |
426 |
| -YfwHI5pbwURl+Ust69uyn8EDRfBhqQCNqdB4iNOA4QKBgQDOnx3MrluSDSb+kJ86 |
427 |
| -CwwN6MCWLn20Rq36afmTW8iUvSmbKO/KyYbrVY/+qsoSQ89L3doE5O2YHsu08OJ7 |
428 |
| -BGJMxfFZ71+OTcvCl5iirkg/2g530cf1/QcYhtqc6+WDvluZUxt4ZpE+jyERQaG3 |
429 |
| -EzaJLPoIbMT+DyCwfXcKWjndCQKBgQC7GPRzA4oTj0csxLuH8y4yIT2wbMPHiSML |
430 |
| -f96OHroUhBeVbruL4y5cu9EJyYKIM9Q1yi13Ce+T+YLlFvUgUpPK/zpF5sPICz+Z |
431 |
| -TRs055t3tG4QOLm6gfrGlyka6n5CLlANT1mSDghlfh1zXZ1m/vME6cFxwgVzGBlE |
432 |
| -ptxBoQiwRQKBgEB+GecRZTOpN0quCYUsfY6536MAz+u9RACto2EDfRAwGxR7Kp25 |
433 |
| -WYuLIW70EC6zS7j6flqYujCJLDxGE+sh6yzbfAH+XW0lizwp5VKh45tKjMmJiUiW |
434 |
| -uehF72abmwAMIrsw3ZovKZbFRiUEv11NefBHQaPvj21de26bOtTYZMdBAoGAMMt9 |
435 |
| -VVGi/R7s7RwR3I7riV9p+00icjOt1B3xKReSaC9bBznt57nEKaNCDU9kn6kEu1KT |
436 |
| -MOyCcxErthuaqmde7B5MUFay0MU+PPkDE3Uj8sA3xDtHFQE5KfnaWo61hwUVE6OS |
437 |
| -NKk8P1v4ylGr72SmdK2SKdz0FuQ+Es2BvAwHfBECgYAPVRckudv8Yx4/dXVkhBkM |
438 |
| -b5V7VUwWYq2Dmwzf83p2C3gqoXbO8d91pkIQhcc+LhC4umYisNFx5cuEfkzJXTBT |
439 |
| -zQWIuZVz5eekCOb+Egi/kBrheenpc+/7NXCx2km1zegN4dn2Njusb0XgLVFMvCkQ |
440 |
| -a3PRfBcOqez6+lxuQkb+NQ== |
441 |
| ------END PRIVATE KEY----- |
442 |
| -` |
443 |
| -) |
0 commit comments