t0003: Add more git-update tests
[aur.git] / git-interface / test / setup.sh
blob7f3d45a1732d7c256f57566ecd9028c8c51d0d5b
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 = ./git-shell.sh
33 git-update-cmd = ./update.sh
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 cat >git-shell.sh <<-\EOF
46 #!/bin/sh
47 echo $AUR_USER
48 echo $AUR_PKGBASE
49 echo $GIT_NAMESPACE
50 EOF
51 chmod +x git-shell.sh
53 cat >update.sh <<-\EOF
54 #!/bin/sh
55 echo $AUR_USER
56 echo $AUR_PKGBASE
57 EOF
58 chmod +x update.sh
60 AUR_CONFIG=config
61 export AUR_CONFIG
63 # Create SSH public keys which will be used by the test users later.
64 AUTH_KEYTYPE_USER=ssh-rsa
65 AUTH_KEYTEXT_USER=AAAAB3NzaC1yc2EAAAADAQABAAABAQCeUafDK4jqUiRHNQfwHcYjBKLZ4Rc1sNUofHApBP6j91nIvDHZe2VUqeBmFUhBz7kXK4VbXD9nlHMun2HeshL8hXnMzymZ8Wk7+IKefj61pajJkIdttw9Tnayfg7uhg5RbFy9zpEjmGjnIVjSzOXKCwppNT+CNujpKM5FD8gso/Z+l3fD+IwrPwS1SzF1Z99nqI9n2FM/JWZqluvTqnW9WdAvBDfutXxp0R5ZiLI5TAKL2Ssp5rpL70pkLXhv+9sK545zKKlXUFmw6Pi2iVBdqdRsk9ocl49dLiNIh8CYDCO3CRQn+8EnpBhTor2TKQxGJI3mzoBwWJJxoKhD/XlYJ
66 AUTH_FINGERPRINT_USER=SHA256:F/OFtYAy0JCytAGUi4RUZnOsThhQtFMK7fH1YvFBCpo
68 AUTH_KEYTYPE_TU=ssh-rsa
69 AUTH_KEYTEXT_TU=AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Q2Beg6jf2r1LZ4vwT5y10dK8+/c5RaNyTwv77wF2OSLXh32xW0ovhE2lW2gqoakdGsxgM2fTtqMTl29WOsAxlGF7x9XbWhFXFUT88Daq1fAeuihkiRjfBbInSW/WcrFZ+biLBch67addtfkkd4PmAafDeeCtszAXqza+ltBG1oxAGiTXgI3LOhA1/GtLLxsi5sPUO3ZlhvwDn4Sy0aXYx8l9hop/PU4Cjn82hyRa9r+SRxQ3KtjKxcVMnZ8IyXOrBwXTukgSBR/6nSdEmO0JPkYUFuNwh3UGFKuNkrPguL5T+4YDym6czYmZJzQ7NNl2pLKYmYgBwBe5rORlWfN5
70 AUTH_FINGERPRINT_TU=SHA256:xQGC6j/U1Q3NDXLl04pm+Shr1mjYUXbGMUzlm9vby4k
72 AUTH_KEYTYPE_MISSING=sha-rsa
73 AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
74 AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w
76 # Initialize the test database.
77 rm -f aur.db
78 sed \
79 -e '/^DROP DATABASE /d' \
80 -e '/^CREATE DATABASE /d' \
81 -e '/^USE /d' \
82 -e 's/ ENGINE = InnoDB//' \
83 -e 's/ [A-Z]* UNSIGNED NOT NULL AUTO_INCREMENT/ INTEGER NOT NULL/' \
84 -e 's/([0-9, ]*) UNSIGNED / UNSIGNED /' \
85 "$TEST_DIRECTORY/../../schema/aur-schema.sql" | sqlite3 aur.db
87 echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (1, 'user', '!', 'user@localhost', 1);" | sqlite3 aur.db
88 echo "INSERT INTO Users (ID, UserName, Passwd, Email, AccountTypeID) VALUES (2, 'tu', '!', 'tu@localhost', 2);" | sqlite3 aur.db
90 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
91 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db
93 echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db
94 echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db
96 # Initialize a Git repository and test packages.
97 GIT_AUTHOR_EMAIL=author@example.com
98 GIT_AUTHOR_NAME='A U Thor'
99 GIT_COMMITTER_EMAIL=committer@example.com
100 GIT_COMMITTER_NAME='C O Mitter'
101 export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
102 export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
105 mkdir aur.git
106 cd aur.git
107 git init -q
109 git checkout -q --orphan refs/namespaces/foobar/refs/heads/master
111 cat >PKGBUILD <<-EOF
112 pkgname=foobar
113 pkgver=1
114 pkgrel=1
115 pkgdesc='aurweb test package.'
116 url='https://aur.archlinux.org/'
117 license=('GPL')
118 arch=('any')
119 depends=('python-pygit2')
120 source=()
121 md5sums=()
123 package() {
124 echo 'Hello world!'
128 cat >.SRCINFO <<-EOF
129 pkgbase = foobar
130 pkgdesc = aurweb test package.
131 pkgver = 1
132 pkgrel = 1
133 url = https://aur.archlinux.org/
134 arch = any
135 license = GPL
136 depends = python-pygit2
138 pkgname = foobar
141 git add PKGBUILD .SRCINFO
142 git commit -q -m 'Initial import'
144 sed 's/\(pkgrel.*\)1/\12/' PKGBUILD >PKGBUILD.new
145 sed 's/\(pkgrel.*\)1/\12/' .SRCINFO >.SRCINFO.new
146 mv PKGBUILD.new PKGBUILD
147 mv .SRCINFO.new .SRCINFO
148 git commit -q -am 'Bump pkgrel'
150 git checkout -q --orphan refs/namespaces/foobar2/refs/heads/master
152 cat >PKGBUILD <<-EOF
153 pkgname=foobar2
154 pkgver=1
155 pkgrel=1
156 pkgdesc='aurweb test package.'
157 url='https://aur.archlinux.org/'
158 license=('MIT')
159 arch=('any')
160 depends=('python-pygit2')
161 source=()
162 md5sums=()
164 package() {
165 echo 'Hello world!'
169 cat >.SRCINFO <<-EOF
170 pkgbase = foobar2
171 pkgdesc = aurweb test package.
172 pkgver = 1
173 pkgrel = 1
174 url = https://aur.archlinux.org/
175 arch = any
176 license = MIT
177 depends = python-pygit2
179 pkgname = foobar2
182 git add PKGBUILD .SRCINFO
183 git commit -q -m 'Initial import'
185 git checkout -q refs/namespaces/foobar/refs/heads/master