Blob


1 REGRESS_TARGETS=test_repo_read test_repo_read_group \
2 test_repo_read_denied_user test_repo_read_denied_group \
3 test_repo_read_bad_user test_repo_read_bad_group \
4 test_repo_write test_repo_write_empty
5 NOOBJ=Yes
7 .PHONY: ensure_root prepare_test_repo check_test_repo start_gotd
9 GOTD_TEST_ROOT=/tmp
10 GOTD_DEVUSER?=gotdev
11 GOTD_DEVUSER_HOME!=userinfo $(GOTD_DEVUSER) | awk '/^dir/ {print $$2}'
12 GOTD_TEST_REPO!?=mktemp -d "$(GOTD_TEST_ROOT)/gotd-test-repo-XXXXXXXXX"
13 GOTD_TEST_REPO_URL=ssh://${GOTD_DEVUSER}@127.0.0.1/test-repo
15 GOTD_TEST_USER?=${LOGNAME}
16 GOTD_TEST_USER_HOME!=userinfo $(GOTD_TEST_USER) | awk '/^dir/ {print $$2}'
18 # gotd.conf parameters
19 GOTD_USER?=got
20 GOTD_GROUP?=gotsh
21 GOTD_SOCK=${GOTD_DEVUSER_HOME}/gotd.sock
23 GOTD_START_CMD=../../gotd/obj/gotd -vv -f $(PWD)/gotd.conf
24 GOTD_STOP_CMD=../../gotctl/obj/gotctl -f $(GOTD_SOCK) stop
25 GOTD_TRAP=trap "$(GOTD_STOP_CMD)" HUP INT QUIT PIPE TERM
27 GOTD_TEST_ENV=GOTD_TEST_ROOT=$(GOTD_TEST_ROOT) \
28 GOTD_TEST_REPO_URL=$(GOTD_TEST_REPO_URL) \
29 GOTD_TEST_REPO=$(GOTD_TEST_REPO) \
30 GOTD_SOCK=$(GOTD_SOCK) \
31 GOTD_DEVUSER=$(GOTD_DEVUSER) \
32 HOME=$(GOTD_TEST_USER_HOME) \
33 PATH=$(GOTD_TEST_USER_HOME)/bin:$(PATH)
35 ensure_root:
36 @if [[ `id -u` -ne 0 ]]; then \
37 echo gotd test suite must be run by root >&2; \
38 false; \
39 fi
41 start_gotd_ro: ensure_root
42 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
43 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
44 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
45 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
46 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
47 @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
48 @echo "}" >> $(PWD)/gotd.conf
49 @$(GOTD_TRAP); $(GOTD_START_CMD)
50 @$(GOTD_TRAP); sleep .5
52 start_gotd_ro_group: ensure_root
53 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
54 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
55 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
56 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
57 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
58 @echo ' permit ro :$(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
59 @echo "}" >> $(PWD)/gotd.conf
60 @$(GOTD_TRAP); $(GOTD_START_CMD)
61 @$(GOTD_TRAP); sleep .5
63 # try a permit rule followed by a deny rule; last matched rule wins
64 start_gotd_ro_denied_user: ensure_root
65 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
66 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
67 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
68 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
69 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
70 @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
71 @echo ' deny $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
72 @echo "}" >> $(PWD)/gotd.conf
73 @$(GOTD_TRAP); $(GOTD_START_CMD)
74 @$(GOTD_TRAP); sleep .5
76 # try a permit rule followed by a deny rule; last matched rule wins
77 start_gotd_ro_denied_group: ensure_root
78 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
79 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
80 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
81 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
82 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
83 @echo ' permit ro $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
84 @echo ' deny :$(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
85 @echo "}" >> $(PWD)/gotd.conf
86 @$(GOTD_TRAP); $(GOTD_START_CMD)
87 @$(GOTD_TRAP); sleep .5
89 # $GOTD_DEVUSER should not equal $GOTD_USER
90 start_gotd_ro_bad_user: ensure_root
91 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
92 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
93 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
94 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
95 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
96 @echo ' permit ro $(GOTD_USER)' >> $(PWD)/gotd.conf
97 @echo "}" >> $(PWD)/gotd.conf
98 @$(GOTD_TRAP); $(GOTD_START_CMD)
99 @$(GOTD_TRAP); sleep .5
101 # $GOTD_DEVUSER should not be in group wheel
102 start_gotd_ro_bad_group: ensure_root
103 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
104 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
105 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
106 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
107 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
108 @echo ' permit ro :wheel' >> $(PWD)/gotd.conf
109 @echo "}" >> $(PWD)/gotd.conf
110 @$(GOTD_TRAP); $(GOTD_START_CMD)
111 @$(GOTD_TRAP); sleep .5
113 start_gotd_rw: ensure_root
114 @echo 'unix_socket "$(GOTD_SOCK)"' > $(PWD)/gotd.conf
115 @echo "unix_group $(GOTD_GROUP)" >> $(PWD)/gotd.conf
116 @echo "user $(GOTD_USER)" >> $(PWD)/gotd.conf
117 @echo 'repository "test-repo" {' >> $(PWD)/gotd.conf
118 @echo ' path "$(GOTD_TEST_REPO)"' >> $(PWD)/gotd.conf
119 @echo ' permit rw $(GOTD_DEVUSER)' >> $(PWD)/gotd.conf
120 @echo "}" >> $(PWD)/gotd.conf
121 @$(GOTD_TRAP); $(GOTD_START_CMD)
122 @$(GOTD_TRAP); sleep .5
124 prepare_test_repo: ensure_root
125 @chown ${GOTD_USER} "${GOTD_TEST_REPO}"
126 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./prepare_test_repo.sh'
128 prepare_test_repo_empty: ensure_root
129 @chown ${GOTD_USER} "${GOTD_TEST_REPO}"
130 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./prepare_test_repo.sh 1'
132 test_repo_read: prepare_test_repo start_gotd_ro
133 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
134 'env $(GOTD_TEST_ENV) sh ./repo_read.sh'
135 @$(GOTD_STOP_CMD) 2>/dev/null
136 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
138 test_repo_read_group: prepare_test_repo start_gotd_ro_group
139 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
140 'env $(GOTD_TEST_ENV) sh ./repo_read.sh'
141 @$(GOTD_STOP_CMD) 2>/dev/null
142 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
144 test_repo_read_denied_user: prepare_test_repo start_gotd_ro_denied_user
145 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
146 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
147 @$(GOTD_STOP_CMD) 2>/dev/null
148 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
150 test_repo_read_denied_group: prepare_test_repo start_gotd_ro_denied_group
151 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
152 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
153 @$(GOTD_STOP_CMD) 2>/dev/null
154 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
156 test_repo_read_bad_user: prepare_test_repo start_gotd_ro_bad_user
157 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
158 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
159 @$(GOTD_STOP_CMD) 2>/dev/null
160 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
162 test_repo_read_bad_group: prepare_test_repo start_gotd_ro_bad_group
163 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
164 'env $(GOTD_TEST_ENV) sh ./repo_read_access_denied.sh'
165 @$(GOTD_STOP_CMD) 2>/dev/null
166 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
168 test_repo_write: prepare_test_repo start_gotd_rw
169 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
170 'env $(GOTD_TEST_ENV) sh ./repo_write.sh'
171 @$(GOTD_STOP_CMD) 2>/dev/null
172 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
174 test_repo_write_empty: prepare_test_repo_empty start_gotd_rw
175 @-$(GOTD_TRAP); su ${GOTD_TEST_USER} -c \
176 'env $(GOTD_TEST_ENV) sh ./repo_write_empty.sh'
177 @$(GOTD_STOP_CMD) 2>/dev/null
178 @su -m ${GOTD_USER} -c 'env $(GOTD_TEST_ENV) sh ./check_test_repo.sh'
180 .include <bsd.regress.mk>