diff --git a/resources/db/v2.sql b/resources/db/v2.sql index ac40b88..f3ee618 100644 --- a/resources/db/v2.sql +++ b/resources/db/v2.sql @@ -35,7 +35,6 @@ UPDATE tags WHERE t_team = :team AND t_artifact = :artifact AND t_name = :name - AND t_image_id != :image AND t_manifest != :manifest; -- name: get-manifest diff --git a/test/org/zalando/stups/pierone/v2_test.clj b/test/org/zalando/stups/pierone/v2_test.clj index e80221e..8b125c2 100644 --- a/test/org/zalando/stups/pierone/v2_test.clj +++ b/test/org/zalando/stups/pierone/v2_test.clj @@ -19,7 +19,10 @@ digest "sha256:a5c741c7dea3a96944022b4b9a0b1480cfbeef5f4cc934850e8afacb48e18c5e" invalid-manifest (.getBytes "stuff") manifest (str "{\"fsLayers\":[{\"blobSum\":\"" digest "\"}]}") - manifest-bytes (.getBytes manifest)] + manifest-bytes (.getBytes manifest) + ; manifest2 is simply a different manifest (we use the same FS layer twice, does not make sense, but works) + manifest2 (str "{\"fsLayers\":[{\"blobSum\":\"" digest "\"},{\"blobSum\":\"" digest "\"}]}") + manifest2-bytes (.getBytes manifest2)] (u/wipe-db system) @@ -95,5 +98,30 @@ (client/get (u/v1-url "/images/" digest "/json") (u/http-opts))) + ; check that *-SNAPSHOT tags are mutable + (expect 200 + (client/put (u/v2-url "/myteam/myart/manifests/1.0-SNAPSHOT") + (u/http-opts (io/input-stream manifest-bytes)))) + + ; works, no changes + (expect 200 + (client/put (u/v2-url "/myteam/myart/manifests/1.0-SNAPSHOT") + (u/http-opts (io/input-stream manifest-bytes)))) + + (is (= manifest + (expect 200 + (client/get (u/v2-url "/myteam/myart/manifests/1.0-SNAPSHOT") + (u/http-opts))))) + + ; update, new manifest + (expect 200 + (client/put (u/v2-url "/myteam/myart/manifests/1.0-SNAPSHOT") + (u/http-opts (io/input-stream manifest2-bytes)))) + + (is (= manifest2 + (expect 200 + (client/get (u/v2-url "/myteam/myart/manifests/1.0-SNAPSHOT") + (u/http-opts))))) + ; stop (component/stop system)))