Initialize locale directory for tests
[aur.git] / test / setup.sh
blob5c761f22d76a29408c83d36bd74a33f2591f9b6e
1 TEST_DIRECTORY="$(pwd)"
2 TOPLEVEL="$(cd .. && pwd)"
4 . ./sharness.sh
6 # Configure python search path.
7 PYTHONPATH="$TOPLEVEL"
8 export PYTHONPATH
10 # Configure paths to the Git interface scripts.
11 GIT_AUTH="$TOPLEVEL/aurweb/git/auth.py"
12 GIT_SERVE="$TOPLEVEL/aurweb/git/serve.py"
13 GIT_UPDATE="$TOPLEVEL/aurweb/git/update.py"
14 MKPKGLISTS="$TOPLEVEL/aurweb/scripts/mkpkglists.py"
15 TUVOTEREMINDER="$TOPLEVEL/aurweb/scripts/tuvotereminder.py"
16 PKGMAINT="$TOPLEVEL/aurweb/scripts/pkgmaint.py"
17 USERMAINT="$TOPLEVEL/aurweb/scripts/usermaint.py"
18 AURBLUP="$TOPLEVEL/aurweb/scripts/aurblup.py"
19 NOTIFY="$TOPLEVEL/aurweb/scripts/notify.py"
20 RENDERCOMMENT="$TOPLEVEL/aurweb/scripts/rendercomment.py"
22 # Create the configuration file and a dummy notification script.
23 cat >config <<-EOF
24 [database]
25 backend = sqlite
26 name = aur.db
28 [options]
29 aur_location = https://aur.archlinux.org
30 aur_request_ml = aur-requests@archlinux.org
31 enable-maintenance = 0
32 maintenance-exceptions = 127.0.0.1
33 commit_uri = https://aur.archlinux.org/cgit/aur.git/log/?h=%s&id=%s
34 localedir = $TOPLEVEL/web/locale/
36 [notifications]
37 notify-cmd = $NOTIFY
38 sendmail = ./sendmail.sh
39 sender = notify@aur.archlinux.org
40 reply-to = noreply@aur.archlinux.org
42 [auth]
43 valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
44 username-regex = [a-zA-Z0-9]+[.\-_]?[a-zA-Z0-9]+$
45 git-serve-cmd = $GIT_SERVE
46 ssh-options = restrict
48 [serve]
49 repo-path = ./aur.git/
50 repo-regex = [a-z0-9][a-z0-9.+_-]*$
51 git-shell-cmd = ./git-shell.sh
52 git-update-cmd = ./update.sh
53 ssh-cmdline = ssh aur@aur.archlinux.org
55 [update]
56 max-blob-size = 256000
58 [aurblup]
59 db-path = $(pwd)/sync/
60 sync-dbs = test
61 server = file://$(pwd)/remote/
63 [mkpkglists]
64 packagesfile = packages.gz
65 pkgbasefile = pkgbase.gz
66 userfile = users.gz
67 EOF
69 cat >sendmail.sh <<-\EOF
70 #!/bin/sh
71 cat >>sendmail.out
72 EOF
73 chmod +x sendmail.sh
75 cat >git-shell.sh <<-\EOF
76 #!/bin/sh
77 echo $AUR_USER
78 echo $AUR_PKGBASE
79 echo $GIT_NAMESPACE
80 EOF
81 chmod +x git-shell.sh
83 cat >update.sh <<-\EOF
84 #!/bin/sh
85 echo $AUR_USER
86 echo $AUR_PKGBASE
87 EOF
88 chmod +x update.sh
90 AUR_CONFIG=config
91 export AUR_CONFIG
93 # Create SSH public keys which will be used by the test users later.
94 AUTH_KEYTYPE_USER=ssh-rsa
95 AUTH_KEYTEXT_USER=AAAAB3NzaC1yc2EAAAADAQABAAABAQCeUafDK4jqUiRHNQfwHcYjBKLZ4Rc1sNUofHApBP6j91nIvDHZe2VUqeBmFUhBz7kXK4VbXD9nlHMun2HeshL8hXnMzymZ8Wk7+IKefj61pajJkIdttw9Tnayfg7uhg5RbFy9zpEjmGjnIVjSzOXKCwppNT+CNujpKM5FD8gso/Z+l3fD+IwrPwS1SzF1Z99nqI9n2FM/JWZqluvTqnW9WdAvBDfutXxp0R5ZiLI5TAKL2Ssp5rpL70pkLXhv+9sK545zKKlXUFmw6Pi2iVBdqdRsk9ocl49dLiNIh8CYDCO3CRQn+8EnpBhTor2TKQxGJI3mzoBwWJJxoKhD/XlYJ
96 AUTH_FINGERPRINT_USER=SHA256:F/OFtYAy0JCytAGUi4RUZnOsThhQtFMK7fH1YvFBCpo
98 AUTH_KEYTYPE_TU=ssh-rsa
99 AUTH_KEYTEXT_TU=AAAAB3NzaC1yc2EAAAADAQABAAABAQC4Q2Beg6jf2r1LZ4vwT5y10dK8+/c5RaNyTwv77wF2OSLXh32xW0ovhE2lW2gqoakdGsxgM2fTtqMTl29WOsAxlGF7x9XbWhFXFUT88Daq1fAeuihkiRjfBbInSW/WcrFZ+biLBch67addtfkkd4PmAafDeeCtszAXqza+ltBG1oxAGiTXgI3LOhA1/GtLLxsi5sPUO3ZlhvwDn4Sy0aXYx8l9hop/PU4Cjn82hyRa9r+SRxQ3KtjKxcVMnZ8IyXOrBwXTukgSBR/6nSdEmO0JPkYUFuNwh3UGFKuNkrPguL5T+4YDym6czYmZJzQ7NNl2pLKYmYgBwBe5rORlWfN5
100 AUTH_FINGERPRINT_TU=SHA256:xQGC6j/U1Q3NDXLl04pm+Shr1mjYUXbGMUzlm9vby4k
102 AUTH_KEYTYPE_MISSING=sha-rsa
103 AUTH_KEYTEXT_MISSING=AAAAB3NzaC1yc2EAAAADAQABAAABAQC9UTpssBunuTBCT3KFtv+yb+cN0VmI2C9O9U7wHlkEZWxNBK8is6tnDHXBxRuvRk0LHILkTidLLFX22ZF0+TFgSz7uuEvGZVNpa2Fn2+vKJJYMvZEvb/f8VHF5/Jddt21VOyu23royTN/duiT7WIZdCtEmq5C9Y43NPfsB8FbUc+FVSYT2Lq7g1/bzvFF+CZxwCrGjC3qC7p3pshICfFR8bbWgRN33ClxIQ7MvkcDtfNu38dLotJqdfEa7NdQgba5/S586f1A4OWKc/mQJFyTaGhRBxw/cBSjqonvO0442VYLHFxlrTHoUunKyOJ8+BJfKgjWmfENC9ESY3mL/IEn5
104 AUTH_FINGERPRINT_MISSING=SHA256:uB0B+30r2WA1TDMUmFcaEBjosjnFGzn33XFhiyvTL9w
106 # Setup fake SSH environment.
107 SSH_CLIENT='1.2.3.4 1234 22'
108 SSH_CONNECTION='1.2.3.4 1234 4.3.2.1 22'
109 SSH_TTY=/dev/pts/0
110 export SSH_CLIENT SSH_CONNECTION SSH_TTY
112 # Initialize the test database.
113 DBSCHEMA="$TOPLEVEL/schema/aur-schema-sqlite.sql"
114 [ -f "$DBSCHEMA" ] || error 'SQLite database schema not found'
115 rm -f aur.db
116 sqlite3 aur.db <"$DBSCHEMA"
118 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (1, 'user', '!', 'user@localhost', 'en', 1);" | sqlite3 aur.db
119 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (2, 'tu', '!', 'tu@localhost', 'en', 2);" | sqlite3 aur.db
120 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (3, 'dev', '!', 'dev@localhost', 'en', 3);" | sqlite3 aur.db
121 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (4, 'user2', '!', 'user2@localhost', 'en', 1);" | sqlite3 aur.db
122 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (5, 'user3', '!', 'user3@localhost', 'en', 1);" | sqlite3 aur.db
123 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (6, 'user4', '!', 'user4@localhost', 'en', 1);" | sqlite3 aur.db
124 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (7, 'tu2', '!', 'tu2@localhost', 'en', 2);" | sqlite3 aur.db
125 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (8, 'tu3', '!', 'tu3@localhost', 'en', 2);" | sqlite3 aur.db
126 echo "INSERT INTO Users (ID, UserName, Passwd, Email, LangPreference, AccountTypeID) VALUES (9, 'tu4', '!', 'tu4@localhost', 'en', 2);" | sqlite3 aur.db
128 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (1, '$AUTH_FINGERPRINT_USER', '$AUTH_KEYTYPE_USER $AUTH_KEYTEXT_USER');" | sqlite3 aur.db
129 echo "INSERT INTO SSHPubKeys (UserID, Fingerprint, PubKey) VALUES (2, '$AUTH_FINGERPRINT_TU', '$AUTH_KEYTYPE_TU $AUTH_KEYTEXT_TU');" | sqlite3 aur.db
131 echo "INSERT INTO Bans (IPAddress, BanTS) VALUES ('1.3.3.7', 0);" | sqlite3 aur.db
133 echo "INSERT INTO PackageBlacklist (Name) VALUES ('forbidden');" | sqlite3 aur.db
134 echo "INSERT INTO OfficialProviders (Name, Repo, Provides) VALUES ('official', 'core', 'official');" | sqlite3 aur.db
136 # Initialize a Git repository and test packages.
137 GIT_AUTHOR_EMAIL=author@example.com
138 GIT_AUTHOR_NAME='A U Thor'
139 GIT_COMMITTER_EMAIL=committer@example.com
140 GIT_COMMITTER_NAME='C O Mitter'
141 export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
142 export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
145 mkdir aur.git
146 cd aur.git
147 git init -q
149 git checkout -q --orphan refs/namespaces/foobar/refs/heads/master
151 cat >PKGBUILD <<-EOF
152 pkgname=foobar
153 pkgver=1
154 pkgrel=1
155 pkgdesc='aurweb test package.'
156 url='https://aur.archlinux.org/'
157 license=('GPL')
158 arch=('any')
159 depends=('python-pygit2')
160 source=()
161 md5sums=()
163 package() {
164 echo 'Hello world!'
168 cat >.SRCINFO <<-EOF
169 pkgbase = foobar
170 pkgdesc = aurweb test package.
171 pkgver = 1
172 pkgrel = 1
173 url = https://aur.archlinux.org/
174 arch = any
175 license = GPL
176 depends = python-pygit2
178 pkgname = foobar
181 git add PKGBUILD .SRCINFO
182 git commit -q -m 'Initial import'
184 sed 's/\(pkgrel.*\)1/\12/' PKGBUILD >PKGBUILD.new
185 sed 's/\(pkgrel.*\)1/\12/' .SRCINFO >.SRCINFO.new
186 mv PKGBUILD.new PKGBUILD
187 mv .SRCINFO.new .SRCINFO
188 git commit -q -am 'Bump pkgrel'
190 git checkout -q --orphan refs/namespaces/foobar2/refs/heads/master
192 cat >PKGBUILD <<-EOF
193 pkgname=foobar2
194 pkgver=1
195 pkgrel=1
196 pkgdesc='aurweb test package.'
197 url='https://aur.archlinux.org/'
198 license=('MIT')
199 arch=('any')
200 depends=('python-pygit2')
201 source=()
202 md5sums=()
204 package() {
205 echo 'Hello world!'
209 cat >.SRCINFO <<-EOF
210 pkgbase = foobar2
211 pkgdesc = aurweb test package.
212 pkgver = 1
213 pkgrel = 1
214 url = https://aur.archlinux.org/
215 arch = any
216 license = MIT
217 depends = python-pygit2
219 pkgname = foobar2
222 git add PKGBUILD .SRCINFO
223 git commit -q -m 'Initial import'
225 git checkout -q refs/namespaces/foobar/refs/heads/master