@@ -1396,7 +1396,145 @@ var _ = Describe("Starting CatalogSource e2e tests", func() {
1396
1396
})
1397
1397
})
1398
1398
})
1399
+ When ("The namespace is labled as Pod Security Admission policy enforce:restricted" , func () {
1400
+ BeforeEach (func () {
1401
+ var err error
1402
+ testNS := & corev1.Namespace {}
1403
+ Eventually (func () error {
1404
+ testNS , err = c .KubernetesInterface ().CoreV1 ().Namespaces ().Get (context .TODO (), ns .GetName (), metav1.GetOptions {})
1405
+ if err != nil {
1406
+ return err
1407
+ }
1408
+ return nil
1409
+ }).Should (BeNil ())
1410
+
1411
+ testNS .ObjectMeta .Labels = map [string ]string {
1412
+ "pod-security.kubernetes.io/enforce" : "restricted" ,
1413
+ "pod-security.kubernetes.io/enforce-version" : "latest" ,
1414
+ }
1399
1415
1416
+ Eventually (func () error {
1417
+ _ , err := c .KubernetesInterface ().CoreV1 ().Namespaces ().Update (context .TODO (), testNS , metav1.UpdateOptions {})
1418
+ if err != nil {
1419
+ return err
1420
+ }
1421
+ return nil
1422
+ }).Should (BeNil ())
1423
+ })
1424
+ When ("A CatalogSource built with opm v1.21.0 (<v1.23.2)is created without spec.RunAsRoot set to true" , func () {
1425
+ var sourceName string
1426
+ BeforeEach (func () {
1427
+ sourceName = genName ("catalog-" )
1428
+ source := & v1alpha1.CatalogSource {
1429
+ TypeMeta : metav1.TypeMeta {
1430
+ Kind : v1alpha1 .CatalogSourceKind ,
1431
+ APIVersion : v1alpha1 .CatalogSourceCRDAPIVersion ,
1432
+ },
1433
+ ObjectMeta : metav1.ObjectMeta {
1434
+ Name : sourceName ,
1435
+ Namespace : ns .GetName (),
1436
+ Labels : map [string ]string {"olm.catalogSource" : sourceName },
1437
+ },
1438
+ Spec : v1alpha1.CatalogSourceSpec {
1439
+ SourceType : v1alpha1 .SourceTypeGrpc ,
1440
+ Image : "docker.io/anik120/ditto-index-opm:v1.21.0" ,
1441
+ },
1442
+ }
1443
+
1444
+ Eventually (func () error {
1445
+ _ , err := crc .OperatorsV1alpha1 ().CatalogSources (source .GetNamespace ()).Create (context .Background (), source , metav1.CreateOptions {})
1446
+ return err
1447
+ }).Should (Succeed ())
1448
+ })
1449
+ It ("The registry pod fails to become come up because of lack of permission" , func () {
1450
+ Eventually (func () (bool , error ) {
1451
+ podList , err := c .KubernetesInterface ().CoreV1 ().Pods (ns .GetName ()).List (context .TODO (), metav1.ListOptions {})
1452
+ if err != nil {
1453
+ return false , err
1454
+ }
1455
+ for _ , pod := range podList .Items {
1456
+ if pod .ObjectMeta .OwnerReferences != nil && pod .ObjectMeta .OwnerReferences [0 ].Name == sourceName {
1457
+ if pod .Status .ContainerStatuses != nil && pod .Status .ContainerStatuses [0 ].State .Terminated != nil {
1458
+ return true , nil
1459
+ }
1460
+ }
1461
+ }
1462
+ return false , nil
1463
+ }).Should (BeTrue ())
1464
+ })
1465
+ })
1466
+ })
1467
+ When ("The namespace is labled as Pod Security Admission policy enforce:privileged" , func () {
1468
+ BeforeEach (func () {
1469
+ var err error
1470
+ testNS := & corev1.Namespace {}
1471
+ Eventually (func () error {
1472
+ testNS , err = c .KubernetesInterface ().CoreV1 ().Namespaces ().Get (context .TODO (), ns .GetName (), metav1.GetOptions {})
1473
+ if err != nil {
1474
+ return err
1475
+ }
1476
+ return nil
1477
+ }).Should (BeNil ())
1478
+
1479
+ testNS .ObjectMeta .Labels = map [string ]string {
1480
+ "pod-security.kubernetes.io/enforce" : "privileged" ,
1481
+ "pod-security.kubernetes.io/enforce-version" : "latest" ,
1482
+ }
1483
+
1484
+ Eventually (func () error {
1485
+ _ , err := c .KubernetesInterface ().CoreV1 ().Namespaces ().Update (context .TODO (), testNS , metav1.UpdateOptions {})
1486
+ if err != nil {
1487
+ return err
1488
+ }
1489
+ return nil
1490
+ }).Should (BeNil ())
1491
+ })
1492
+ When ("A CatalogSource built with opm v1.21.0 (<v1.23.2)is created with spec.RunAsRoot set to true" , func () {
1493
+ var sourceName string
1494
+ BeforeEach (func () {
1495
+ sourceName = genName ("catalog-" )
1496
+ source := & v1alpha1.CatalogSource {
1497
+ TypeMeta : metav1.TypeMeta {
1498
+ Kind : v1alpha1 .CatalogSourceKind ,
1499
+ APIVersion : v1alpha1 .CatalogSourceCRDAPIVersion ,
1500
+ },
1501
+ ObjectMeta : metav1.ObjectMeta {
1502
+ Name : sourceName ,
1503
+ Namespace : ns .GetName (),
1504
+ Labels : map [string ]string {"olm.catalogSource" : sourceName },
1505
+ },
1506
+ Spec : v1alpha1.CatalogSourceSpec {
1507
+ RunAsRoot : true ,
1508
+ SourceType : v1alpha1 .SourceTypeGrpc ,
1509
+ Image : "docker.io/anik120/ditto-index-opm:v1.21.0" ,
1510
+ },
1511
+ }
1512
+
1513
+ Eventually (func () error {
1514
+ _ , err := crc .OperatorsV1alpha1 ().CatalogSources (source .GetNamespace ()).Create (context .Background (), source , metav1.CreateOptions {})
1515
+ return err
1516
+ }).Should (Succeed ())
1517
+ })
1518
+ It ("The registry pod comes up successfully" , func () {
1519
+ Eventually (func () (bool , error ) {
1520
+ podList , err := c .KubernetesInterface ().CoreV1 ().Pods (ns .GetName ()).List (context .TODO (), metav1.ListOptions {})
1521
+ if err != nil {
1522
+ return false , err
1523
+ }
1524
+ for _ , pod := range podList .Items {
1525
+ if pod .ObjectMeta .OwnerReferences != nil && pod .ObjectMeta .OwnerReferences [0 ].Name == sourceName {
1526
+ if pod .Status .ContainerStatuses != nil {
1527
+ if * pod .Status .ContainerStatuses [0 ].Started == true {
1528
+ return true , nil
1529
+ }
1530
+ }
1531
+ }
1532
+ }
1533
+ return false , nil
1534
+ }).Should (BeTrue ())
1535
+ })
1536
+ })
1537
+ })
1400
1538
})
1401
1539
1402
1540
func getOperatorDeployment (c operatorclient.ClientInterface , namespace string , operatorLabels labels.Set ) (* appsv1.Deployment , error ) {
0 commit comments