diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 118f96ffc30bfc991ac29a86bf37bc8185fa92ac..8212bf68770680fa73e05388aa343d536d867d94 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -96,6 +96,11 @@ worker:
         worker:
           image: $CI_REGISTRY_IMAGE/worker:$TAG_SHA
       volumes:
+        backend-storage:
+          driver_opts:
+            type: none
+            o: bind
+            device: './storage/backend'
         backend-logs:
           driver_opts:
             type: none
@@ -114,6 +119,7 @@ worker:
   before_script:
     - apt update && apt install -y --no-install-recommends
         curl
+        debhelper
         docker-compose
         docker.io
         dpkg-dev
@@ -123,7 +129,7 @@ worker:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
     - docker info
     - echo "$COMPOSE_OVERLAY" > docker-compose.override.yml
-    - mkdir -p logs/backend logs/frontend logs/worker
+    - mkdir -p logs/backend logs/frontend logs/worker storage/backend
     - |
       cat << EOF > ~/.oscrc
       [general]
diff --git a/tests/01-build-dash b/tests/01-build-dash
index 32f4bba3debe1395985943d9bf03999e9c8227a9..81045a781b86b21c67dfa0e318f799a4a10b14ed 100755
--- a/tests/01-build-dash
+++ b/tests/01-build-dash
@@ -10,13 +10,45 @@ cd "$dir"
 
 apt-get source --download-only dash
 
+tarball=$(echo dash_*.orig.tar.*)
+# pretend the tarball is signed
+echo signature > $tarball.asc
+
+pkgver=${tarball%.orig.tar.*}
+ver=${pkgver#dash_}
+
+# create fake extra tarball
+mkdir vendor
+tar -zcf dash_$ver.orig-vendor.tar.gz vendor/
+
+# pretend this is a valid signature
+echo signature > dash_$ver.orig-vendor.tar.gz.asc
+
+(
+	dpkg-source -x *dsc
+	cd dash-$ver
+	dpkg-buildpackage -d -S
+)
+
 osc dput bullseye-derivative *.dsc
 
 cd "$OLDPWD"
 
-if ! wait-for-pkg bullseye-derivative dash main
+if ! wait-for-pkg bullseye-derivative dash main x86_64 5
 then
 	# DoD didn't wake up, restart the backend and try again
 	docker-compose exec -T backend supervisorctl restart all
-	wait-for-pkg bullseye-derivative dash main
+	wait-for-pkg bullseye-derivative dash main x86_64
 fi
+
+wait-for-file -d storage/backend/repos/bullseye-derivative/main
+
+wait-for-file -f storage/backend/repos/bullseye-derivative/main/$tarball
+
+ls storage/backend/repos/bullseye-derivative/main -lR
+
+set -x
+
+test -f storage/backend/repos/bullseye-derivative/main/$tarball.asc
+test -f storage/backend/repos/bullseye-derivative/main/dash_$ver.orig-vendor.tar.gz
+test -f storage/backend/repos/bullseye-derivative/main/dash_$ver.orig-vendor.tar.gz.asc
diff --git a/tests/scripts/wait-for-file b/tests/scripts/wait-for-file
new file mode 100755
index 0000000000000000000000000000000000000000..228aa397cfdf28191eddb5f5bc5b6a5e8ceac59d
--- /dev/null
+++ b/tests/scripts/wait-for-file
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+iterations=30
+wait=30
+
+echo "Checking for file presence: $@"
+
+for i in $(seq $iterations)
+do
+	echo test "$@"
+	if test "$@"
+	then
+		echo "Condition reached." >&2
+		break
+	fi
+	if [ $i -eq $iterations ]
+	then
+		echo "ERROR: file failed to appear within the time limit!" >&2
+		exit 1
+	fi
+	echo "Sleeping ${wait}s (iteration $i/$iterations)"
+	sleep $wait
+done
diff --git a/tests/scripts/wait-for-pkg b/tests/scripts/wait-for-pkg
index 5105f6ab79d7f069e620265d544a63c2f9134f68..de06669c598933fca9c8b99a8af0ad70704271d5 100755
--- a/tests/scripts/wait-for-pkg
+++ b/tests/scripts/wait-for-pkg
@@ -4,7 +4,7 @@ project=$1
 pkg=$2
 prj_repo=${3:-main}
 prj_arch=${4:-x86_64}
-iterations=30
+iterations=${5:-30}
 wait=30
 
 echo "Checking build result: $project $pkg $prj_repo $prj_arch"