Blame


1 b50a2b46 2022-12-29 stsp .include "../../got-version.mk"
2 b50a2b46 2022-12-29 stsp
3 55f70a40 2022-11-17 stsp REGRESS_TARGETS=test_repo_read test_repo_read_group \
4 d5a5db9a 2022-11-17 stsp test_repo_read_denied_user test_repo_read_denied_group \
5 55f70a40 2022-11-17 stsp test_repo_read_bad_user test_repo_read_bad_group \
6 9afa3de2 2023-04-04 stsp test_repo_write test_repo_write_empty test_request_bad \
7 9afa3de2 2023-04-04 stsp test_repo_write_protected
8 6ae16afd 2022-10-31 stsp NOOBJ=Yes
9 bec0d92a 2023-01-17 stsp CLEANFILES=gotd.conf
10 6ae16afd 2022-10-31 stsp
11 6ae16afd 2022-10-31 stsp .PHONY: ensure_root prepare_test_repo check_test_repo start_gotd
12 6ae16afd 2022-10-31 stsp
13 6ae16afd 2022-10-31 stsp GOTD_TEST_ROOT=/tmp
14 6ae16afd 2022-10-31 stsp GOTD_DEVUSER?=gotdev
15 4398c738 2022-10-31 op GOTD_DEVUSER_HOME!=userinfo $(GOTD_DEVUSER) | awk '/^dir/ {print $$2}'
16 ea2819be 2023-05-29 op GOTD_TEST_REPO!?=mktemp -d "$(GOTD_TEST_ROOT)/gotd-test-repo-XXXXXXXXXX"
17 6ae16afd 2022-10-31 stsp GOTD_TEST_REPO_URL=ssh://${GOTD_DEVUSER}@127.0.0.1/test-repo
18 6ae16afd 2022-10-31 stsp
19 b1a9f90e 2022-12-09 stsp GOTD_TEST_USER?=${DOAS_USER}
20 b1a9f90e 2022-12-09 stsp .if empty(GOTD_TEST_USER)
21 b1a9f90e 2022-12-09 stsp GOTD_TEST_USER=${SUDO_USER}
22 b1a9f90e 2022-12-09 stsp .endif
23 b1a9f90e 2022-12-09 stsp .if empty(GOTD_TEST_USER)
24 b1a9f90e 2022-12-09 stsp GOTD_TEST_USER=${USER}
25 b1a9f90e 2022-12-09 stsp .endif
26 4398c738 2022-10-31 op GOTD_TEST_USER_HOME!=userinfo $(GOTD_TEST_USER) | awk '/^dir/ {print $$2}'
27 6ae16afd 2022-10-31 stsp
28 6ae16afd 2022-10-31 stsp # gotd.conf parameters
29 6ae16afd 2022-10-31 stsp GOTD_USER?=got
30 6ae16afd 2022-10-31 stsp GOTD_SOCK=${GOTD_DEVUSER_HOME}/gotd.sock
31 6ae16afd 2022-10-31 stsp
32 b50a2b46 2022-12-29 stsp .if "${GOT_RELEASE}" == "Yes"
33 b50a2b46 2022-12-29 stsp PREFIX ?= /usr/local
34 b50a2b46 2022-12-29 stsp BINDIR ?= ${PREFIX}/bin
35 b50a2b46 2022-12-29 stsp .else
36 b50a2b46 2022-12-29 stsp PREFIX ?= ${GOTD_TEST_USER_HOME}
37 b50a2b46 2022-12-29 stsp BINDIR ?= ${PREFIX}/bin
38 b50a2b46 2022-12-29 stsp .endif
39 b50a2b46 2022-12-29 stsp
40 b50a2b46 2022-12-29 stsp GOTD_START_CMD?=$(BINDIR)/gotd -vv -f $(PWD)/gotd.conf
41 b50a2b46 2022-12-29 stsp GOTD_STOP_CMD?=$(BINDIR)/gotctl -f $(GOTD_SOCK) stop
42 6ae16afd 2022-10-31 stsp GOTD_TRAP=trap "$(GOTD_STOP_CMD)" HUP INT QUIT PIPE TERM
43 6ae16afd 2022-10-31 stsp
44 6ae16afd 2022-10-31 stsp GOTD_TEST_ENV=GOTD_TEST_ROOT=$(GOTD_TEST_ROOT) \
45 6ae16afd 2022-10-31 stsp GOTD_TEST_REPO_URL=$(GOTD_TEST_REPO_URL) \
46 6ae16afd 2022-10-31 stsp GOTD_TEST_REPO=$(GOTD_TEST_REPO) \
47 6ae16afd 2022-10-31 stsp GOTD_SOCK=$(GOTD_SOCK) \
48 4ce98cf7 2022-11-08 stsp GOTD_DEVUSER=$(GOTD_DEVUSER) \
49 6ae16afd 2022-10-31 stsp HOME=$(GOTD_TEST_USER_HOME) \
50 6ae16afd 2022-10-31 stsp PATH=$(GOTD_TEST_USER_HOME)/bin:$(PATH)
51 6ae16afd 2022-10-31 stsp
52 6ae16afd 2022-10-31 stsp ensure_root:
53 6ae16afd 2022-10-31 stsp @if [[ `id -u` -ne 0 ]]; then \
54 62192466 2022-12-07 stsp echo gotd test suite must be started by root >&2; \
55 6ae16afd 2022-10-31 stsp false; \
56 62192466 2022-12-07 stsp fi ; \
57 62192466 2022-12-07 stsp if [[ "$(GOTD_TEST_USER)" = "root" ]]; then \
58 62192466 2022-12-07 stsp echo GOTD_TEST_USER must be a non-root user >&2; \
59 62192466 2022-12-07 stsp false; \
60 6ae16afd 2022-10-31 stsp fi
61 6ae16afd 2022-10-31 stsp
62 0ccf3acb 2022-11-16 stsp start_gotd_ro: ensure_root
63 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
64 6ae16afd 2022-10-31 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
65 6ae16afd 2022-10-31 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
66 6ae16afd 2022-10-31 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
67 0ccf3acb 2022-11-16 stsp @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
68 6ae16afd 2022-10-31 stsp @echo "}" >> $(PWD)/gotd.conf
69 6ae16afd 2022-10-31 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
70 6ae16afd 2022-10-31 stsp @$(GOTD_TRAP); sleep .5
71 6ae16afd 2022-10-31 stsp
72 ddbe612c 2022-11-17 stsp start_gotd_ro_group: ensure_root
73 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
74 ddbe612c 2022-11-17 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
75 ddbe612c 2022-11-17 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
76 ddbe612c 2022-11-17 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
77 ddbe612c 2022-11-17 stsp @echo ' permit ro :$(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
78 ddbe612c 2022-11-17 stsp @echo "}" >> $(PWD)/gotd.conf
79 ddbe612c 2022-11-17 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
80 ddbe612c 2022-11-17 stsp @$(GOTD_TRAP); sleep .5
81 ddbe612c 2022-11-17 stsp
82 ec093ca7 2022-11-17 stsp # try a permit rule followed by a deny rule; last matched rule wins
83 ec093ca7 2022-11-17 stsp start_gotd_ro_denied_user: ensure_root
84 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
85 ec093ca7 2022-11-17 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
86 ec093ca7 2022-11-17 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
87 ec093ca7 2022-11-17 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
88 ec093ca7 2022-11-17 stsp @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
89 ec093ca7 2022-11-17 stsp @echo ' deny $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
90 ec093ca7 2022-11-17 stsp @echo "}" >> $(PWD)/gotd.conf
91 ec093ca7 2022-11-17 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
92 ec093ca7 2022-11-17 stsp @$(GOTD_TRAP); sleep .5
93 ec093ca7 2022-11-17 stsp
94 d5a5db9a 2022-11-17 stsp # try a permit rule followed by a deny rule; last matched rule wins
95 d5a5db9a 2022-11-17 stsp start_gotd_ro_denied_group: ensure_root
96 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
97 d5a5db9a 2022-11-17 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
98 d5a5db9a 2022-11-17 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
99 d5a5db9a 2022-11-17 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
100 d5a5db9a 2022-11-17 stsp @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
101 d5a5db9a 2022-11-17 stsp @echo ' deny :$(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
102 d5a5db9a 2022-11-17 stsp @echo "}" >> $(PWD)/gotd.conf
103 d5a5db9a 2022-11-17 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
104 d5a5db9a 2022-11-17 stsp @$(GOTD_TRAP); sleep .5
105 d5a5db9a 2022-11-17 stsp
106 55f70a40 2022-11-17 stsp # $GOTD_DEVUSER should not equal $GOTD_USER
107 55f70a40 2022-11-17 stsp start_gotd_ro_bad_user: ensure_root
108 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
109 55f70a40 2022-11-17 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
110 55f70a40 2022-11-17 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
111 55f70a40 2022-11-17 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
112 55f70a40 2022-11-17 stsp @echo ' permit ro $(GOTD_USER)' >> $(PWD)/gotd.conf
113 55f70a40 2022-11-17 stsp @echo "}" >> $(PWD)/gotd.conf
114 55f70a40 2022-11-17 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
115 55f70a40 2022-11-17 stsp @$(GOTD_TRAP); sleep .5
116 55f70a40 2022-11-17 stsp
117 ddbe612c 2022-11-17 stsp # $GOTD_DEVUSER should not be in group wheel
118 ddbe612c 2022-11-17 stsp start_gotd_ro_bad_group: ensure_root
119 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
120 ddbe612c 2022-11-17 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
121 ddbe612c 2022-11-17 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
122 ddbe612c 2022-11-17 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
123 ddbe612c 2022-11-17 stsp @echo ' permit ro :wheel' >> $(PWD)/gotd.conf
124 ddbe612c 2022-11-17 stsp @echo "}" >> $(PWD)/gotd.conf
125 ddbe612c 2022-11-17 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
126 ddbe612c 2022-11-17 stsp @$(GOTD_TRAP); sleep .5
127 ddbe612c 2022-11-17 stsp
128 0ccf3acb 2022-11-16 stsp start_gotd_rw: ensure_root
129 83577462 2023-01-05 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
130 0ccf3acb 2022-11-16 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
131 0ccf3acb 2022-11-16 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
132 0ccf3acb 2022-11-16 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
133 0ccf3acb 2022-11-16 stsp @echo ' permit rw $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
134 0ccf3acb 2022-11-16 stsp @echo "}" >> $(PWD)/gotd.conf
135 0ccf3acb 2022-11-16 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
136 0ccf3acb 2022-11-16 stsp @$(GOTD_TRAP); sleep .5
137 0ccf3acb 2022-11-16 stsp
138 9afa3de2 2023-04-04 stsp start_gotd_rw_protected: ensure_root
139 9afa3de2 2023-04-04 stsp @echo 'listen on "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
140 9afa3de2 2023-04-04 stsp @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
141 9afa3de2 2023-04-04 stsp @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
142 9afa3de2 2023-04-04 stsp @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
143 9afa3de2 2023-04-04 stsp @echo ' permit rw $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
144 9afa3de2 2023-04-04 stsp @echo ' protect branch "foo"' >> $(PWD)/gotd.conf
145 9afa3de2 2023-04-04 stsp @echo ' protect tag namespace "refs/tags/"' >> $(PWD)/gotd.conf
146 9afa3de2 2023-04-04 stsp @echo ' protect branch "refs/heads/main"' >> $(PWD)/gotd.conf
147 9afa3de2 2023-04-04 stsp @echo "}" >> $(PWD)/gotd.conf
148 9afa3de2 2023-04-04 stsp @$(GOTD_TRAP); $(GOTD_START_CMD)
149 9afa3de2 2023-04-04 stsp @$(GOTD_TRAP); sleep .5
150 9afa3de2 2023-04-04 stsp
151 6ae16afd 2022-10-31 stsp prepare_test_repo: ensure_root
152 6ae16afd 2022-10-31 stsp @chown ${GOTD_USER} "${GOTD_TEST_REPO}"
153 6ae16afd 2022-10-31 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./prepare_test_repo.sh'
154 6ae16afd 2022-10-31 stsp
155 4ce98cf7 2022-11-08 stsp prepare_test_repo_empty: ensure_root
156 4ce98cf7 2022-11-08 stsp @chown ${GOTD_USER} "${GOTD_TEST_REPO}"
157 4ce98cf7 2022-11-08 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./prepare_test_repo.sh 1'
158 4ce98cf7 2022-11-08 stsp
159 0ccf3acb 2022-11-16 stsp test_repo_read: prepare_test_repo start_gotd_ro
160 6ae16afd 2022-10-31 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
161 6ae16afd 2022-10-31 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read.sh'
162 6ae16afd 2022-10-31 stsp @$(GOTD_STOP_CMD) 2>/dev/null
163 6ae16afd 2022-10-31 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
164 6ae16afd 2022-10-31 stsp
165 ddbe612c 2022-11-17 stsp test_repo_read_group: prepare_test_repo start_gotd_ro_group
166 ddbe612c 2022-11-17 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
167 ddbe612c 2022-11-17 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read.sh'
168 ddbe612c 2022-11-17 stsp @$(GOTD_STOP_CMD) 2>/dev/null
169 ddbe612c 2022-11-17 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
170 ddbe612c 2022-11-17 stsp
171 ec093ca7 2022-11-17 stsp test_repo_read_denied_user: prepare_test_repo start_gotd_ro_denied_user
172 ec093ca7 2022-11-17 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
173 ec093ca7 2022-11-17 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
174 ec093ca7 2022-11-17 stsp @$(GOTD_STOP_CMD) 2>/dev/null
175 ec093ca7 2022-11-17 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
176 ec093ca7 2022-11-17 stsp
177 d5a5db9a 2022-11-17 stsp test_repo_read_denied_group: prepare_test_repo start_gotd_ro_denied_group
178 d5a5db9a 2022-11-17 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
179 d5a5db9a 2022-11-17 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
180 d5a5db9a 2022-11-17 stsp @$(GOTD_STOP_CMD) 2>/dev/null
181 d5a5db9a 2022-11-17 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
182 d5a5db9a 2022-11-17 stsp
183 55f70a40 2022-11-17 stsp test_repo_read_bad_user: prepare_test_repo start_gotd_ro_bad_user
184 55f70a40 2022-11-17 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
185 55f70a40 2022-11-17 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
186 55f70a40 2022-11-17 stsp @$(GOTD_STOP_CMD) 2>/dev/null
187 55f70a40 2022-11-17 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
188 55f70a40 2022-11-17 stsp
189 ddbe612c 2022-11-17 stsp test_repo_read_bad_group: prepare_test_repo start_gotd_ro_bad_group
190 ddbe612c 2022-11-17 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
191 ddbe612c 2022-11-17 stsp 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
192 ddbe612c 2022-11-17 stsp @$(GOTD_STOP_CMD) 2>/dev/null
193 ddbe612c 2022-11-17 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
194 ddbe612c 2022-11-17 stsp
195 0ccf3acb 2022-11-16 stsp test_repo_write: prepare_test_repo start_gotd_rw
196 6ae16afd 2022-10-31 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
197 6ae16afd 2022-10-31 stsp 'env $(GOTD_TEST_ENV) sh ./repo_write.sh'
198 6ae16afd 2022-10-31 stsp @$(GOTD_STOP_CMD) 2>/dev/null
199 6ae16afd 2022-10-31 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
200 4ce98cf7 2022-11-08 stsp
201 0ccf3acb 2022-11-16 stsp test_repo_write_empty: prepare_test_repo_empty start_gotd_rw
202 4ce98cf7 2022-11-08 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
203 4ce98cf7 2022-11-08 stsp 'env $(GOTD_TEST_ENV) sh ./repo_write_empty.sh'
204 4ce98cf7 2022-11-08 stsp @$(GOTD_STOP_CMD) 2>/dev/null
205 4ce98cf7 2022-11-08 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
206 9afa3de2 2023-04-04 stsp
207 9afa3de2 2023-04-04 stsp test_repo_write_protected: prepare_test_repo start_gotd_rw_protected
208 9afa3de2 2023-04-04 stsp @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
209 9afa3de2 2023-04-04 stsp 'env $(GOTD_TEST_ENV) sh ./repo_write_protected.sh'
210 9afa3de2 2023-04-04 stsp @$(GOTD_STOP_CMD) 2>/dev/null
211 9afa3de2 2023-04-04 stsp @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
212 6ae16afd 2022-10-31 stsp
213 a5feed5f 2022-12-26 stsp test_request_bad: prepare_test_repo_empty start_gotd_ro
214 44ff0a44 2022-12-20 stsp @-$(GOTD_TRAP); su -m ${GOTD_TEST_USER} -c \
215 a5feed5f 2022-12-26 stsp 'env $(GOTD_TEST_ENV) sh ./request_bad.sh'
216 44ff0a44 2022-12-20 stsp @$(GOTD_STOP_CMD) 2>/dev/null
217 44ff0a44 2022-12-20 stsp
218 6ae16afd 2022-10-31 stsp .include <bsd.regress.mk>