t0001: Add more git-auth tests
[aur.git] / git-interface / test / setup.sh
blob45129782736b793a344b3c913bcd2e586edc5809
1 TEST_DIRECTORY="$(pwd)"
3 . ./sharness.sh
5 # Configure paths to the Git interface scripts.
6 GIT_AUTH="$TEST_DIRECTORY/../git-auth.py"
7 GIT_SERVE="$TEST_DIRECTORY/../git-serve.py"
8 GIT_UPDATE="$TEST_DIRECTORY/../git-update.py"
10 # Create the configuration file and a dummy notification script.
11 cat >config <<-EOF
12 [database]
13 backend = sqlite
14 name = aur.db
16 [options]
17 enable-maintenance = 0
18 maintenance-exceptions = 127.0.0.1
20 [notifications]
21 notify-cmd = ./notify.sh
23 [auth]
24 valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
25 username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
26 git-serve-cmd = /srv/http/aurweb/git-interface/git-serve.py
27 ssh-options = restrict
29 [serve]
30 repo-path = ./aur.git/
31 repo-regex = [a-z0-9][a-z0-9.+_-]*$
32 git-shell-cmd = /usr/bin/git-shell
33 git-update-cmd = /srv/http/aurweb/git-interface/git-update.py
34 ssh-cmdline = ssh aur@aur.archlinux.org
36 [update]
37 max-blob-size = 256000
38 EOF
40 cat >notify.sh <<-EOF
41 #!/bin/sh
42 EOF
43 chmod +x notify.sh
45 AUR_CONFIG=config
46 export AUR_CONFIG
48 # Create SSH public keys which will be used by the test users later.
49 AUTH_KEYTYPE_USER=ssh-rsa
50 AUTH_KEYTEXT_USER=AAAAB3NzaC1yc2EAAAADAQABAAABAQCeUafDK4jqUiRHNQfwHcYjBKLZ4Rc1sNUofHApBP6j91nIvDHZe2VUqeBmFUhBz7kXK4VbXD9nlHMun2HeshL8hXnMzymZ8Wk7+IKefj61pajJkIdttw9Tnayfg7uhg5RbFy9zpEjmGjnIVjSzOXKCwppNT+CNujpKM5FD8gso/Z+l3fD+IwrPwS1SzF1Z99nqI9n2FM/JWZqluvTqnW9WdAvBDfutXxp0R5ZiLI5TAKL2Ssp5rpL70pkLXhv+9sK545zKKlXUFmw6Pi2iVBdqdRsk9ocl49dLiNIh8CYDCO3CRQn+8EnpBhTor2TKQxGJI3mzoBwWJJxoKhD/XlYJ
51 AUTH_FINGERPRINT_USER=SHA256:F/OFtYAy0JCytAGUi4RUZnOsThhQtFMK7fH1YvFBCpo
53 AUTH_KEYTYPE_TU=ssh-rsa
54 AUTH_KEYTEXT_TU=AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Q2Beg6jf2r1LZ4vwT5y10dK8+/c5RaNyTwv77wF2OSLXh32xW0ovhE2lW2gqoakdGsxgM2fTtqMTl29WOsAxlGF7x9XbWhFXFUT88Daq1fAeuihkiRjfBbInSW/WcrFZ+biLBch67addtfkkd4PmAafDeeCtszAXqza+ltBG1oxAGiTXgI3LOhA1/GtLLxsi5sPUO3ZlhvwDn4Sy0aXYx8l9hop/PU4Cjn82hyRa9r+SRxQ3KtjKxcVMnZ8IyXOrBwXTukgSBR/6nSdEmO0JPkYUFuNwh3UGFKuNkrPguL5T+4YDym6czYmZJzQ7NNl2pLKYmYgBwBe5rORlWfN5
55 AUTH_FINGERPRINT_TU=SHA256:xQGC6j/U1Q3NDXLl04pm+Shr1mjYUXbGMUzlm9vby4k
57 AUTH_KEYTYPE_MISSING=sha-rsa
58 AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
59 AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w
61 # Initialize the test database.
62 rm -f aur.db
63 sed \
64 -e '/^DROP DATABASE /d' \
65 -e '/^CREATE DATABASE /d' \
66 -e '/^USE /d' \
67 -e 's/ ENGINE = InnoDB//' \
68 -e 's/ [A-Z]* UNSIGNED NOT NULL AUTO_INCREMENT/ INTEGER NOT NULL/' \
69 -e 's/([0-9, ]*) UNSIGNED / UNSIGNED /' \
70 "$TEST_DIRECTORY/../../schema/aur-schema.sql" | sqlite3 aur.db
72 echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (1, 'user', '!', 'user@localhost', 1);" | sqlite3 aur.db
73 echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (2, 'tu', '!', 'tu@localhost', 2);" | sqlite3 aur.db
75 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
76 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db
78 # Initialize a Git repository to store test packages in.
80 GIT_AUTHOR_EMAIL=author@example.com
81 GIT_AUTHOR_NAME='A U Thor'
82 GIT_COMMITTER_EMAIL=committer@example.com
83 GIT_COMMITTER_NAME='C O Mitter'
84 export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
85 export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
87 mkdir aur.git
88 cd aur.git
90 git init -q
91 git checkout -q -b refs/namespaces/foobar/refs/heads/master
93 cat >PKGBUILD <<-EOF
94 pkgname=foobar
95 pkgver=1
96 pkgrel=1
97 pkgdesc='aurweb test package.'
98 url='https://aur.archlinux.org/'
99 license=('GPL')
100 arch=('any')
101 depends=('python-pygit2')
102 source=()
103 md5sums=()
105 package() {
106 echo 'Hello world!'
110 cat >.SRCINFO <<-EOF
111 pkgbase = foobar
112 pkgdesc = aurweb test package.
113 pkgver = 1
114 pkgrel = 1
115 url = https://aur.archlinux.org/
116 arch = any
117 license = GPL
118 depends = python-pygit2
120 pkgname = foobar
123 git add PKGBUILD .SRCINFO
124 git commit -q -am 'Initial import'