Skip to content

Instantly share code, notes, and snippets.

@erikarvstedt
Created May 29, 2018 23:07
Show Gist options
  • Save erikarvstedt/b3d1137c0cb2d44e7febee8803e8281e to your computer and use it in GitHub Desktop.
Save erikarvstedt/b3d1137c0cb2d44e7febee8803e8281e to your computer and use it in GitHub Desktop.
dataDir=~/tmp/paperless/data/optencryption
paperless=~/tmp/paperless/cmds/optencryption
read -d '' tmpstr <<EOF
runner (dirCfg "$dataDir")
EOF
../build-env $paperless "$tmpstr"
read -d '' tmpstr <<EOF
runner (dirCfg "$dataDir" // {
PAPERLESS_PASSPHRASE = "foo";
})
EOF
../build-env $paperless-encrypted "$tmpstr"
nix-build --out-link ~/tmp/paperless/cmds/imagemagick '<nixpkgs>' -A imagemagick
makeDoc() {
~/tmp/paperless/cmds/imagemagick/bin/convert \
-size 500x40 xc:white -font "DejaVu-Sans" -pointsize 20 -fill black -annotate +5+20 "$1" "$2"
}
makeTestDoc() {
makeDoc "hello world 22.03.1921 $(date +%s%3N)" $1/img-$(date +%s%3N).png
}
set -euox pipefail
#
echo 'test basic no encryption'
rm -rf $dataDir && \
$paperless migrate && \
makeTestDoc $dataDir/consume && \
makeTestDoc $dataDir/consume && \
$paperless document_consumer --oneshot && \
ls $dataDir/media/documents/originals/000000{1,2}.png > /dev/null
#
echo 'test basic with encryption'
rm -rf $dataDir && \
$paperless-encrypted migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
[[ -e $dataDir/media/documents/originals/0000001.png.gpg ]]
#
echo 'test missing password'
rm -rf $dataDir && \
$paperless migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
makeTestDoc $dataDir/consume && \
result=$($paperless document_consumer --oneshot 2>&1 || true) && \
[[ $result == *no\ password\ is\ set* ]]
#
echo 'test changed password'
rm -rf $dataDir && \
$paperless migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
makeTestDoc $dataDir/consume && \
result=$(PAPERLESS_PASSPHRASE=bar $paperless document_consumer --oneshot 2>&1 || true) && \
[[ $result == *current\ password\ doesn\'t\ match* ]]
#
echo 'test migration from old data'
rm -rf $dataDir && \
# create old data
(cd ../paperless && git checkout --quiet tmp-last-common) && \
$paperless-encrypted migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
# migrate to new version
(cd ../paperless && git checkout --quiet disable-encryption) && \
$paperless-encrypted migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
ls $dataDir/media/documents/originals/000000{1,2}.png.gpg > /dev/null
#
echo 'test migration and db conversion: encrypted -> unencrypted'
rm -rf $dataDir && \
# create old data
(cd ../paperless && git checkout --quiet tmp-last-common) && \
$paperless-encrypted migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
# migrate to new version
(cd ../paperless && git checkout --quiet disable-encryption) && \
$paperless-encrypted migrate && \
[[ -e $dataDir/media/documents/originals/0000001.png.gpg ]] && \
# convert to unencrypted db
printf "\n" | $paperless-encrypted change_encryption gpg unencrypted && \
[[ -e $dataDir/media/documents/originals/0000001.png ]] && \
makeTestDoc $dataDir/consume && \
$paperless document_consumer --oneshot
#
echo 'test db conversion: encrypted -> unencrypted -> encrypted'
rm -rf $dataDir && \
# create old data
(cd ../paperless && git checkout --quiet tmp-last-common) && \
$paperless-encrypted migrate && \
makeTestDoc $dataDir/consume && \
$paperless-encrypted document_consumer --oneshot && \
# migrate to new version
(cd ../paperless && git checkout --quiet disable-encryption) && \
$paperless-encrypted migrate && \
# convert to unencrypted db
[[ -e $dataDir/media/documents/originals/0000001.png.gpg ]] && \
printf "\n" | $paperless-encrypted change_encryption gpg unencrypted && \
[[ -e $dataDir/media/documents/originals/0000001.png ]] && \
makeTestDoc $dataDir/consume && \
$paperless document_consumer --oneshot && \
# convert to encrypted db
printf "\n" | $paperless-encrypted change_encryption unencrypted gpg && \
ls $dataDir/media/documents/originals/000000{1,2}.png.gpg > /dev/null
#
# misc
misc() {
makeTestDoc $dataDir/consume
$paperless document_consumer --oneshot
$paperless runserver 0.0.0.0:8000
$paperless-encrypted runserver 0.0.0.0:8000
}
analyze() {
tree $dataDir/
l $dataDir/consume
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment