@@ -555,6 +555,11 @@ func TestClient_CreateAuthenticatedOCMContextWithServiceAccount(t *testing.T) {
555555}
556556
557557func TestClient_GetLatestValidComponentVersion (t * testing.T ) {
558+ publicKey1 , err := os .ReadFile (filepath .Join ("testdata" , "public1_key.pem" ))
559+ require .NoError (t , err )
560+ privateKey , err := os .ReadFile (filepath .Join ("testdata" , "private_key.pem" ))
561+ require .NoError (t , err )
562+
558563 testCases := []struct {
559564 name string
560565 componentVersion func (name string ) * v1alpha1.ComponentVersion
@@ -709,12 +714,79 @@ func TestClient_GetLatestValidComponentVersion(t *testing.T) {
709714
710715 expectedVersion : "v0.0.5" ,
711716 },
717+ {
718+ name : "latest _verified_ version is returned" ,
719+ componentVersion : func (name string ) * v1alpha1.ComponentVersion {
720+ return & v1alpha1.ComponentVersion {
721+ ObjectMeta : metav1.ObjectMeta {
722+ Name : "test-name" ,
723+ Namespace : "default" ,
724+ },
725+ Spec : v1alpha1.ComponentVersionSpec {
726+ Component : name ,
727+ Version : v1alpha1.Version {
728+ Semver : ">=v0.0.1" ,
729+ },
730+ Repository : v1alpha1.Repository {
731+ URL : "localhost" ,
732+ },
733+ Verify : []v1alpha1.Signature {
734+ {
735+ Name : Signature ,
736+ PublicKey : v1alpha1.PublicKey {
737+ SecretRef : & corev1.LocalObjectReference {
738+ Name : "sign-secret" ,
739+ },
740+ },
741+ },
742+ },
743+ },
744+ }
745+ },
746+ setupComponents : func (name string , context * fakeocm.Context ) {
747+ for _ , v := range []string {"v0.0.1" , "v0.0.2" , "v0.0.4" , "v0.0.5" } {
748+ if v == "v0.0.4" {
749+ // sign it
750+ _ = context .AddComponent (& fakeocm.Component {
751+ Name : name ,
752+ Version : v ,
753+ Sign : & fakeocm.Sign {
754+ Name : Signature ,
755+ PrivKey : privateKey ,
756+ PubKey : publicKey1 ,
757+ Digest : "3d879ecdea45acb7f8d85b89fd653288d84af4476eac4141822142ec59c13745" ,
758+ },
759+ })
760+
761+ continue
762+ }
763+
764+ _ = context .AddComponent (& fakeocm.Component {
765+ Name : name ,
766+ Version : v ,
767+ })
768+ }
769+ },
770+
771+ expectedVersion : "v0.0.4" , // v0.0.4 is the only signed version and should be returned.
772+ },
712773 }
713774 for _ , tt := range testCases {
714775 t .Run (tt .name , func (t * testing.T ) {
715776 t .Helper ()
716777
717- fakeKubeClient := env .FakeKubeClient ()
778+ secretName := "sign-secret"
779+ secret := & corev1.Secret {
780+ ObjectMeta : metav1.ObjectMeta {
781+ Name : secretName ,
782+ Namespace : "default" ,
783+ },
784+ Data : map [string ][]byte {
785+ Signature : publicKey1 ,
786+ },
787+ }
788+
789+ fakeKubeClient := env .FakeKubeClient (WithObjects (secret ))
718790 cache := & fakes.FakeCache {}
719791 ocmClient := NewClient (fakeKubeClient , cache )
720792 octx := fakeocm .NewFakeOCMContext ()
0 commit comments