@@ -702,6 +702,7 @@ mod tests {
702702 use super :: * ;
703703 use crate :: test_utils:: * ;
704704 use http:: { Method , Request , StatusCode } ;
705+ use k8s_openapi:: apimachinery:: pkg:: apis:: meta:: v1:: Time ;
705706 use trusted_cluster_operator_test_utils:: mock_client:: * ;
706707 use trusted_cluster_operator_test_utils:: test_error_method;
707708
@@ -932,4 +933,122 @@ mod tests {
932933 assert_eq ! ( rv. version, "0.1.0" ) ;
933934 }
934935 }
936+
937+ #[ tokio:: test]
938+ async fn test_sync_all_machine_luks_key_empty ( ) {
939+ let clos = async |req : Request < _ > , ctr| match ( ctr, req. method ( ) ) {
940+ ( 0 , & Method :: GET ) => {
941+ let list = kube:: api:: ObjectList {
942+ items : Vec :: < Machine > :: new ( ) ,
943+ types : Default :: default ( ) ,
944+ metadata : Default :: default ( ) ,
945+ } ;
946+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
947+ }
948+ _ => panic ! ( "unexpected API interaction: {req:?}, counter {ctr}" ) ,
949+ } ;
950+ count_check ! ( 1 , clos, |client| {
951+ assert!( sync_all_machine_luks_key( client) . await . is_ok( ) ) ;
952+ } ) ;
953+ }
954+
955+ #[ tokio:: test]
956+ async fn test_sync_all_machine_luks_key_send_error ( ) {
957+ let clos = async |req : Request < _ > , ctr| match ( ctr, req. method ( ) ) {
958+ ( 0 , & Method :: GET ) => {
959+ let list = kube:: api:: ObjectList {
960+ items : vec ! [ dummy_machine( "m1" ) ] ,
961+ types : Default :: default ( ) ,
962+ metadata : Default :: default ( ) ,
963+ } ;
964+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
965+ }
966+ ( _, & Method :: GET ) => Err ( StatusCode :: NOT_FOUND ) ,
967+ _ => panic ! ( "unexpected API interaction: {req:?}, counter {ctr}" ) ,
968+ } ;
969+ count_check ! ( 2 , clos, |client| {
970+ assert!( sync_all_machine_luks_key( client) . await . is_err( ) ) ;
971+ } ) ;
972+ }
973+
974+ #[ tokio:: test]
975+ async fn test_update_attestation_keys_empty ( ) {
976+ let clos = async |_, ctr| match ctr {
977+ 0 => {
978+ let list = kube:: api:: ObjectList {
979+ items : Vec :: < Secret > :: new ( ) ,
980+ types : Default :: default ( ) ,
981+ metadata : Default :: default ( ) ,
982+ } ;
983+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
984+ }
985+ _ => Err ( StatusCode :: NOT_FOUND ) ,
986+ } ;
987+ count_check ! ( 2 , clos, |client| {
988+ assert!( update_attestation_keys( client) . await . is_ok( ) ) ;
989+ } ) ;
990+ }
991+
992+ #[ tokio:: test]
993+ async fn test_update_attestation_keys_register_fails_gracefully ( ) {
994+ let clos = async |_, ctr| match ctr {
995+ 0 => {
996+ let list = kube:: api:: ObjectList {
997+ items : vec ! [ dummy_ak_secret( "ak1" ) , dummy_ak_secret( "ak2" ) ] ,
998+ types : Default :: default ( ) ,
999+ metadata : Default :: default ( ) ,
1000+ } ;
1001+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
1002+ }
1003+ _ => Err ( StatusCode :: NOT_FOUND ) ,
1004+ } ;
1005+ count_check ! ( 2 , clos, |client| {
1006+ assert!( update_attestation_keys( client) . await . is_ok( ) ) ;
1007+ } ) ;
1008+ }
1009+
1010+ #[ tokio:: test]
1011+ async fn test_update_attestation_keys_register_success ( ) {
1012+ let _ = jsonwebtoken_openssl:: install_default ( ) ;
1013+ let clos = async |req : Request < _ > , ctr| match ( ctr, req. method ( ) ) {
1014+ ( 0 , & Method :: GET ) => {
1015+ let list = kube:: api:: ObjectList {
1016+ items : vec ! [ dummy_ak_secret( "ak1" ) ] ,
1017+ types : Default :: default ( ) ,
1018+ metadata : Default :: default ( ) ,
1019+ } ;
1020+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
1021+ }
1022+ ( 1 , & Method :: GET ) => {
1023+ assert ! ( req. uri( ) . path( ) . contains( TRUSTEE_AUTH_SECRET ) ) ;
1024+ Ok ( serde_json:: to_string ( & dummy_trustee_auth ( ) ) . unwrap ( ) )
1025+ }
1026+ ( 2 , & Method :: GET ) => Ok ( serde_json:: to_string ( & dummy_cluster ( ) ) . unwrap ( ) ) ,
1027+ _ => panic ! ( "unexpected API interaction: {req:?}, counter {ctr}" ) ,
1028+ } ;
1029+ count_check ! ( 3 , clos, |client| {
1030+ assert!( update_attestation_keys( client) . await . is_ok( ) ) ;
1031+ } ) ;
1032+ }
1033+
1034+ #[ tokio:: test]
1035+ async fn test_update_attestation_keys_filters_deleting ( ) {
1036+ let clos = async |_, ctr| match ctr {
1037+ 0 => {
1038+ let mut deleting = dummy_ak_secret ( "ak-deleting" ) ;
1039+ deleting. metadata . deletion_timestamp =
1040+ Some ( Time ( k8s_openapi:: jiff:: Timestamp :: now ( ) ) ) ;
1041+ let list = kube:: api:: ObjectList {
1042+ items : vec ! [ deleting] ,
1043+ types : Default :: default ( ) ,
1044+ metadata : Default :: default ( ) ,
1045+ } ;
1046+ Ok ( serde_json:: to_string ( & list) . unwrap ( ) )
1047+ }
1048+ _ => Err ( StatusCode :: NOT_FOUND ) ,
1049+ } ;
1050+ count_check ! ( 2 , clos, |client| {
1051+ assert!( update_attestation_keys( client) . await . is_ok( ) ) ;
1052+ } ) ;
1053+ }
9351054}
0 commit comments