summaryrefslogtreecommitdiffstats
path: root/tests/uploaders.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/uploaders.test')
-rw-r--r--tests/uploaders.test253
1 files changed, 253 insertions, 0 deletions
diff --git a/tests/uploaders.test b/tests/uploaders.test
new file mode 100644
index 0000000..6260996
--- /dev/null
+++ b/tests/uploaders.test
@@ -0,0 +1,253 @@
+set -u
+. "$TESTSDIR"/test.inc
+
+mkdir -p conf
+cat > conf/distributions <<EOF
+Codename: test1
+Components: main
+Architectures: source coal
+Uploaders: uploaders1
+
+Codename: test2
+Components: main
+Architectures: source coal
+Uploaders: uploaders2
+EOF
+
+checknonetakes() {
+testrun - -b . __checkuploaders test1 test2 < "$1" 3<<EOF
+stdout
+*='testpackage' would NOT have been accepted by any of the distributions selected.
+EOF
+}
+
+check1takes() {
+testrun - -b . __checkuploaders test1 test2 < "$1" 3<<EOF
+stdout
+*='testpackage' would have been accepted by 'test1'
+EOF
+}
+check2takes() {
+testrun - -b . __checkuploaders test1 test2 < "$1" 3<<EOF
+stdout
+*='testpackage' would have been accepted by 'test2'
+EOF
+}
+
+cat > descr1 <<EOF
+source testpackage
+architecture source
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descr1 3<<EOF
+*=Error opening './conf/uploaders1': No such file or directory
+-v0*=There have been errors!
+returns 254
+EOF
+
+cat > conf/uploaders1 <<EOF
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descr1 3<<EOF
+*=Error opening './conf/uploaders2': No such file or directory
+-v0*=There have been errors!
+returns 254
+EOF
+
+cat > conf/uploaders2 <<EOF
+include uploaders2
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descr1 3<<EOF
+*=./conf/uploaders2:1:0: Too deeply nested include directives (> 100). Built some recursion?
+*=included from './conf/uploaders2' line 1
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat > conf/uploaders2 <<EOF
+allow source 'testpackage' by unsigned
+EOF
+
+check2takes descr1
+
+cat > descrbad <<EOF
+unknowncommand
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descrbad 3<<EOF
+*=Unparseable line 'unknowncommand'
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat > descrbad <<EOF
+architecture source
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descrbad 3<<EOF
+*=No source name specified!
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat > descres <<EOF
+source testpackage
+architecture source
+signature e0000000000000000
+EOF
+cat > descrs <<EOF
+source testpackage
+architecture source
+signature 0000000000000000
+EOF
+
+checknonetakes descres
+checknonetakes descrs
+
+echo "now test2 accepts all valid signatures for testpackage"
+cat >> conf/uploaders2 <<EOF
+allow source 'testpackage' by any key
+EOF
+
+check2takes descrs
+checknonetakes descres
+
+cat >>conf/uploaders1 <<EOF
+group test
+EOF
+testrun - -b . __checkuploaders test1 test2 < descrbad 3<<EOF
+*=./conf/uploaders1:1:11: missing 'add', 'contains', 'unused' or 'empty' keyword.
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat >conf/uploaders1 <<EOF
+group test add
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descrbad 3<<EOF
+*=./conf/uploaders1:1:15: key id or fingerprint expected!
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat >conf/uploaders1 <<EOF
+group test add 00000000
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descres 3<<EOF
+-v0*=./conf/uploaders1:1: Warning: group 'test' gets members but is not used in any rule
+stdout
+*='testpackage' would NOT have been accepted by any of the distributions selected.
+EOF
+
+cat >>conf/uploaders1 <<EOF
+group test unused
+EOF
+
+checknonetakes descres
+
+cat >>conf/uploaders1 <<EOF
+allow * by group test
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descrbad 3<<EOF
+*=./conf/uploaders1:3: cannot use group 'test' marked as unused!
+*=./conf/uploaders1:2: here it was marked as unused.
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat >conf/uploaders1 <<EOF
+group test add 00000000
+group test unused
+allow * by group tset
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descres 3<<EOF
+-v0*=./conf/uploaders1:3: Warning: group 'tset' gets used but never gets any members
+stdout
+*='testpackage' would NOT have been accepted by any of the distributions selected.
+EOF
+
+cat >>conf/uploaders1 <<EOF
+group tset contains test
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descres 3<<EOF
+*=./conf/uploaders1:4: cannot use group 'test' marked as unused!
+*=./conf/uploaders1:2: here it got marked as unused.
+-v0*=There have been errors!
+returns 255
+EOF
+
+sed -e '/unused/d' -i conf/uploaders1
+
+check1takes descrs
+checknonetakes descres
+
+cat >>conf/uploaders1 <<EOF
+group test contains indirection
+group indirection contains test
+EOF
+
+testrun - -b . __checkuploaders test1 test2 < descres 3<<EOF
+*=./conf/uploaders1:5: cannot add group 'test' to group 'indirection' as the later is already member of the former!
+-v0*=There have been errors!
+returns 255
+EOF
+
+cat >conf/uploaders1 <<EOF
+group group add 76543210
+group foo add 00000000
+group bla contains group
+group blub contains foo
+group g5 contains foo
+group g5 unused
+group g6 contains foo
+group g6 unused
+group g7 contains foo
+group g7 unused
+group g8 contains foo
+group g8 unused
+group g9 contains foo
+group g9 unused
+group g10 contains foo
+group g10 unused
+group g11 contains foo
+group g11 unused
+group g12 contains foo
+group g12 unused
+group g13 contains foo
+group g13 unused
+group g14 contains foo
+group g14 unused
+group g15 contains foo
+group g15 unused
+group g16 contains foo
+group g16 unused
+group g17 contains foo
+group g17 unused
+group g18 contains foo
+group g18 unused
+group g19 contains foo
+group g19 unused
+group g20 contains foo
+group g20 unused
+group g21 contains foo
+group g21 unused
+allow * by group bla
+allow architectures contain 'coal' by group blub
+EOF
+
+check2takes descrs
+sed -e 's/0000000000000000/fedcba9876543210/g' descrs >> descr2
+sed -e 's/0000000000000000/fedcba9876542210/g' descrs >> descr3
+echo "architecture coal" >> descrs
+check1takes descrs
+check1takes descr2
+check2takes descr3
+
+rm -r conf descr*
+testsuccess