summaryrefslogtreecommitdiff
path: root/tests/test-push-http.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-push-http.t')
-rw-r--r--tests/test-push-http.t123
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/test-push-http.t b/tests/test-push-http.t
new file mode 100644
index 0000000..7f3c6d6
--- /dev/null
+++ b/tests/test-push-http.t
@@ -0,0 +1,123 @@
+ $ "$TESTDIR/hghave" serve || exit 80
+
+ $ hg init test
+ $ cd test
+ $ echo a > a
+ $ hg ci -Ama
+ adding a
+ $ cd ..
+ $ hg clone test test2
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd test2
+ $ echo a >> a
+ $ hg ci -mb
+ $ req() {
+ > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
+ > cat hg.pid >> $DAEMON_PIDS
+ > hg --cwd ../test2 push http://localhost:$HGPORT/
+ > "$TESTDIR/killdaemons.py"
+ > echo % serve errors
+ > cat errors.log
+ > }
+ $ cd ../test
+
+expect ssl error
+
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ remote: ssl required
+ remote: ssl required
+ updating cb9a9f314b8b to public failed!
+ % serve errors
+
+expect authorization error
+
+ $ echo '[web]' > .hg/hgrc
+ $ echo 'push_ssl = false' >> .hg/hgrc
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ abort: authorization failed
+ % serve errors
+
+expect authorization error: must have authorized user
+
+ $ echo 'allow_push = unperson' >> .hg/hgrc
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ abort: authorization failed
+ % serve errors
+
+expect success
+
+ $ echo 'allow_push = *' >> .hg/hgrc
+ $ echo '[hooks]' >> .hg/hgrc
+ $ echo "changegroup = python \"$TESTDIR/printenv.py\" changegroup 0" >> .hg/hgrc
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 1 changesets with 1 changes to 1 files
+ remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
+ % serve errors
+ $ hg rollback
+ repository tip rolled back to revision 0 (undo serve)
+
+expect success, server lacks the httpheader capability
+
+ $ CAP=httpheader
+ $ . "$TESTDIR/notcapable"
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 1 changesets with 1 changes to 1 files
+ remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
+ % serve errors
+ $ hg rollback
+ repository tip rolled back to revision 0 (undo serve)
+
+expect success, server lacks the unbundlehash capability
+
+ $ CAP=unbundlehash
+ $ . "$TESTDIR/notcapable"
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 1 changesets with 1 changes to 1 files
+ remote: changegroup hook: HG_NODE=ba677d0156c1196c1a699fa53f390dcfc3ce3872 HG_SOURCE=serve HG_URL=remote:http:*: (glob)
+ % serve errors
+ $ hg rollback
+ repository tip rolled back to revision 0 (undo serve)
+
+expect authorization error: all users denied
+
+ $ echo '[web]' > .hg/hgrc
+ $ echo 'push_ssl = false' >> .hg/hgrc
+ $ echo 'deny_push = *' >> .hg/hgrc
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ abort: authorization failed
+ % serve errors
+
+expect authorization error: some users denied, users must be authenticated
+
+ $ echo 'deny_push = unperson' >> .hg/hgrc
+ $ req
+ pushing to http://localhost:$HGPORT/
+ searching for changes
+ abort: authorization failed
+ % serve errors
+
+ $ cd ..