mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-02 03:25:56 +01:00
#970 added ngrep dumps for mercurial wire protocol and more realistic tests for isWriteRequest
This commit is contained in:
74
docs/mercurial/clone-empty.md
Normal file
74
docs/mercurial/clone-empty.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Clone empty repository
|
||||
|
||||
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1efk0qxy1dj5v133hev91zwsf4;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 05:57:18 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 130.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
.
|
||||
lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1rsxj8u1rq9wizawhyyxok2p5;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 05:57:18 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
GET /scm/hg/hgtest?cmd=batch HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: cmds=heads+%3Bknown+nodes%3D.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=ewyx4m53d8dajjsob6gxobne;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 05:57:18 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 42.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
0000000000000000000000000000000000000000
|
||||
;
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1o0hou15jtiywsywutf30qwm8;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 05:57:18 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
.
|
||||
publishing.True
|
||||
115
docs/mercurial/push-bookmark.md
Normal file
115
docs/mercurial/push-bookmark.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Push bookmark
|
||||
|
||||
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=7rq9vpp9svfm1sicq7h9vetmv;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 130.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
|
||||
|
||||
GET /scm/hg/hgtest?cmd=batch HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: cmds=heads+%3Bknown+nodes%3Def5993bb4abb32a0565c347844c6d939fc4f4b98.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
T 172.17.0.2:8080 -> 172.17.0.1:36576 [AP]
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1553csz4sf7scyvw8mqnqfirn;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 43.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
ef5993bb4abb32a0565c347844c6d939fc4f4b98
|
||||
;1
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=11xa5u3nrmx8k1nar3sazg6jzh;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
publishing.True
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1p1uzcvfe1pvzh2buzo658rxw;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1mhlj3ucfzdp6ifmzoua4zwit;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
publishing.True
|
||||
|
||||
POST /scm/hg/hgtest?cmd=pushkey HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: key=markone&namespace=bookmarks&new=ef5993bb4abb32a0565c347844c6d939fc4f4b98&old=.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 0.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=s4vtagb303dv1xg809wnp7e8z;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 08:08:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 2.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
.
|
||||
1
|
||||
165
docs/mercurial/push-multiple-branches-to-new.md
Normal file
165
docs/mercurial/push-multiple-branches-to-new.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Push multiple branches to new repository
|
||||
|
||||
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1wu06ykfd4bcv1uv731y4hss2m;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 130.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
|
||||
|
||||
GET /scm/hg/hgtest?cmd=batch HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: cmds=heads+%3Bknown+nodes%3Def5993bb4abb32a0565c347844c6d939fc4f4b98.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1rajglvqx222g5nppcq3jdfk0;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 43.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
0000000000000000000000000000000000000000
|
||||
;0
|
||||
|
||||
GET /scm/hg/hgtest?cmd=known HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: nodes=c0ceccb3b2f0f5c977ff32b9337519e5f37942c2+187ddf37e237c370514487a0bb1a226f11a780b3+b5914611f84eae14543684b2721eec88b0edac12+8b63a323606f10c86b30465570c2574eb7a3a989.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=a5vykp1f0ga2186l8v3gu6lid;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 4.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
0000
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=s8lpwqm4c2nqs9kwcg2ca6vm;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
publishing.True
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1d2qj3kynxlhvk31oli4kk7vf;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
POST /scm/hg/hgtest?cmd=unbundle HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: heads=686173686564+6768033e216468247bd031a0a2d9876d79818f8f.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 913.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HG10GZx...oh.U......E.1.....2q.<...s.1.YK*e#..b..{....{..%A.....
|
||||
,\.....Y.XV....Q/J......`Q/.z.{...<.7....r.s.~?.?..<o....O.]....?.}..m?]z..I..u..}.a..rg..R[i.,D ...!.1..h.r.....G...M.\...J[.....+{.k...u..bL.!....F('..=Q.'......W.>5.~`..?..........O.j.0.....Ih.....!@.P... ..a
|
||||
;!y..cT...]q.8Zg=...<..,.tq.*.........l........';..w^...w...-......Co..Fs.HYg...
|
||||
9.F#.P......1..;......D.H.9$@.^....r:E..18...H....3..h...-.=.6l......=q .)."Yg..p\...s@.#.H.*....c8&96..2.GjJ.`.J....r...=Q1..@R.3.o{q...|.......yq.k..,cY..:[... ...S.2...VYp..c5..&.SFR.............V.d..o..........,.. A..M....k...0_.LO1..1"4.;...B....5.9.".U.m.e......]\../p..;?C..<vW.....|......F.8,....s....2.T
|
||||
N. .k..>W9.........n.~o..gW...Q;..$....S..X.CN.5I].H..!.@...U..J...L.lY.../.-...6.:.Q.'...>.e'..<#3........OL}.52ra[..g*Y:Y....w...=..Z\...S.......tz..;..mf...W......&yUN.r.......4...........`..F...nT..U9................_.~..?...BwzUN.r....B.
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=163487i0ayf9s1k2ng9e1azadj;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 102.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
1
|
||||
adding changesets
|
||||
adding manifests
|
||||
adding file changes
|
||||
added 5 changesets with 3 changes to 3 files
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=a3i712yjss6t1xsxltnssq0tl;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 58.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
c0ceccb3b2f0f5c977ff32b9337519e5f37942c2.1
|
||||
publishing.True
|
||||
|
||||
POST /scm/hg/hgtest?cmd=pushkey HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: key=ef5993bb4abb32a0565c347844c6d939fc4f4b98&namespace=phases&new=0&old=1.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 0.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=g8cavdze42d83knmuasrlg10;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 07:55:14 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 2.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
.
|
||||
1
|
||||
181
docs/mercurial/push-multiple-branches.md
Normal file
181
docs/mercurial/push-multiple-branches.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# Push multiple branches
|
||||
|
||||
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1mvm1rxg8333iib7754ksusxc;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 130.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
|
||||
|
||||
GET /scm/hg/hgtest?cmd=batch HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: cmds=heads+%3Bknown+nodes%3Def5993bb4abb32a0565c347844c6d939fc4f4b98.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=58p9y9vcnz5cjs22dtw8mpwk;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 43.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
c0ceccb3b2f0f5c977ff32b9337519e5f37942c2
|
||||
;0
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=v5wfwj8k4t261dp6808cdouoa;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
publishing.True
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=3pgqytfhm4za1dco9p41j9yz5;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
GET /scm/hg/hgtest?cmd=branchmap HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
.
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1tiz6zf7ui54e1j3d4vouxig5m;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 48.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
default c0ceccb3b2f0f5c977ff32b9337519e5f37942c2
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1augu4tc71xax1dit20dtxzkez;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
POST /scm/hg/hgtest?cmd=unbundle HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: heads=686173686564+95373ca7cd5371cb6c49bb755ee451d9ec585845.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 746.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HG10GZx...]H.Q...z..r.,.Y..Bw.~..c.Z&...hf.:......e.XK.X,...
|
||||
,2.E1.B+...(.B"."*..z1.*......M...........93..k|..I..<...h..J_.L.9>.h..@.....op..^.....#....;.*..W....T@....!..dY....jT..A0O6.}..S.2..JPU.O6...aa...rY.VOf9.....7Ukj.&..<...z...j......%}..Jc.8c....k.."9.&".I.P.\..$.At......0..1..g.2.)<..$.. E..dn#....#.Y$3...n...5....J.e.......SNHN.q.MD..4..."I..`PF..?GH1..F..uES..Rl$47.....a........D.1...87.k.t..D..O_.3..6'cN.w.M..|@E.).X!.h*....U.B.X.....h..$.`4...
|
||||
-..O.:./..oWN.....3...x.L......_[..../..k.R$.x.2..kkv.\2R....4...@.2...1Q..T
|
||||
..(..m....s.Uo.......{.d.....Y....TYO...S.Pl`a5. ."N$.@...b...qJ.l.).n...1..F.Zy.....&>v;.q.....Jy..X.?.;....>U..|.....d.Y.*.q...NR.3...h.T..x..,.]...p{.^S.S...~..`..q.\j{.oCI.............K.....l9n.s......
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1e4fnqpncil9z1f7a2pya26nt7;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 102.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
1
|
||||
adding changesets
|
||||
adding manifests
|
||||
adding file changes
|
||||
added 4 changesets with 2 changes to 2 files
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=f9hvrjssniym1qe33q0u8r2m8;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 101.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
b5914611f84eae14543684b2721eec88b0edac12.1
|
||||
187ddf37e237c370514487a0bb1a226f11a780b3.1
|
||||
publishing.True
|
||||
|
||||
POST /scm/hg/hgtest?cmd=pushkey HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: key=ef5993bb4abb32a0565c347844c6d939fc4f4b98&namespace=phases&new=0&old=1.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 0.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=z5lrut6940a650sw6x9bls8a;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:16:50 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 2.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
1
|
||||
146
docs/mercurial/push-single-changeset.md
Normal file
146
docs/mercurial/push-single-changeset.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# Push single changeset
|
||||
|
||||
GET /scm/hg/hgtest?cmd=capabilities HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=18r2i2jsba46d14ncsmcjdhaem;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 130.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
|
||||
|
||||
GET /scm/hg/hgtest?cmd=batch HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: cmds=heads+%3Bknown+nodes%3Dc0ceccb3b2f0f5c977ff32b9337519e5f37942c2.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=1fw0i0c5zpy281gfgha0f26git;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 43.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
0000000000000000000000000000000000000000
|
||||
;0
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=dfa46uaqgf39w3jhk857oymu;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 15.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
publishing.True
|
||||
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=bookmarks.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=2sk1llvrsagg33xgmwyirfpi;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 0.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
POST /scm/hg/hgtest?cmd=unbundle HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: heads=686173686564+6768033e216468247bd031a0a2d9876d79818f8f.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 261.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HG10GZx.c``8w.....>|=Y..h.q.....N.......%......Z....&&&.&...YZ.&.&[$.........$.%q..&%..d&.).....%*.....Y.....9z...v\..FF......
|
||||
..F..\.z%.%\\.)).)
|
||||
.P[....D..[un..L).nc..q.m*.H.l#C...eZJ..YJ.Q.qR...e.aJ.EjjJ.AZ..A.Q..E.1.T.'D..C....7s.}..4G........3.S.mL.0.....zk
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=hlucs5utn1ifnpehqmjpt593;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 102.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
1
|
||||
adding changesets
|
||||
adding manifests
|
||||
adding file changes
|
||||
added 1 changesets with 1 changes to 1 files
|
||||
|
||||
T 172.17.0.1:33206 -> 172.17.0.2:8080 [AP]
|
||||
GET /scm/hg/hgtest?cmd=listkeys HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: namespace=phases.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=15xomlrxl8qja1cj47rjpqda0y;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 58.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
c0ceccb3b2f0f5c977ff32b9337519e5f37942c2.1
|
||||
publishing.True
|
||||
|
||||
POST /scm/hg/hgtest?cmd=pushkey HTTP/1.1.
|
||||
Accept-Encoding: identity.
|
||||
content-type: application/mercurial-0.1.
|
||||
vary: X-HgArg-1.
|
||||
x-hgarg-1: key=c0ceccb3b2f0f5c977ff32b9337519e5f37942c2&namespace=phases&new=0&old=1.
|
||||
accept: application/mercurial-0.1.
|
||||
authorization: Basic c2NtYWRtaW46c2NtYWRtaW4=.
|
||||
content-length: 0.
|
||||
host: localhost:8080.
|
||||
user-agent: mercurial/proto-1.0 (Mercurial 4.3.1).
|
||||
|
||||
HTTP/1.1 200 OK.
|
||||
Set-Cookie: JSESSIONID=5zrop5v8e661ipk12tvru525;Path=/scm.
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT.
|
||||
Set-Cookie: rememberMe=deleteMe; Path=/scm; Max-Age=0; Expires=Wed, 28-Mar-2018 06:03:35 GMT.
|
||||
Content-Type: application/mercurial-0.1.
|
||||
Content-Length: 2.
|
||||
Server: Jetty(7.6.21.v20160908).
|
||||
|
||||
1
|
||||
|
||||
@@ -39,6 +39,9 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static sonia.scm.web.WireProtocolRequestMockFactory.CMDS_HEADS_KNOWN_NODES;
|
||||
import static sonia.scm.web.WireProtocolRequestMockFactory.Namespace.*;
|
||||
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import sonia.scm.config.ScmConfiguration;
|
||||
import sonia.scm.repository.RepositoryProvider;
|
||||
@@ -51,15 +54,14 @@ import sonia.scm.repository.RepositoryProvider;
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class HgPermissionFilterTest {
|
||||
|
||||
@Mock
|
||||
private HttpServletRequest request;
|
||||
|
||||
@Mock
|
||||
private ScmConfiguration configuration;
|
||||
|
||||
@Mock
|
||||
private RepositoryProvider repositoryProvider;
|
||||
|
||||
|
||||
private WireProtocolRequestMockFactory wireProtocol = new WireProtocolRequestMockFactory("/scm/hg/repo");
|
||||
|
||||
@InjectMocks
|
||||
private HgPermissionFilter filter;
|
||||
|
||||
@@ -82,7 +84,90 @@ public class HgPermissionFilterTest {
|
||||
}
|
||||
|
||||
private boolean isWriteRequest(String method) {
|
||||
HttpServletRequest request = mock(HttpServletRequest.class);
|
||||
when(request.getMethod()).thenReturn(method);
|
||||
return filter.isWriteRequest(request);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link HgPermissionFilter#isWriteRequest(HttpServletRequest)} with a set of requests, which are used for a
|
||||
* fresh clone of a repository.
|
||||
*/
|
||||
@Test
|
||||
public void testIsWriteRequestWithClone() {
|
||||
assertIsReadRequest(wireProtocol.capabilities());
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsReadRequest(wireProtocol.batch(CMDS_HEADS_KNOWN_NODES));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link HgPermissionFilter#isWriteRequest(HttpServletRequest)} with a set of requests, which are used for a
|
||||
* push of a single changeset.
|
||||
*/
|
||||
@Test
|
||||
public void testIsWriteRequestWithSingleChangesetPush() {
|
||||
assertIsReadRequest(wireProtocol.capabilities());
|
||||
assertIsReadRequest(wireProtocol.batch(CMDS_HEADS_KNOWN_NODES.concat("c0ceccb3b2f0f5c977ff32b9337519e5f37942c2")));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsWriteRequest(wireProtocol.unbundle(261L, "686173686564+6768033e216468247bd031a0a2d9876d79818f8f"));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsWriteRequest(wireProtocol.pushkey("c0ceccb3b2f0f5c977ff32b9337519e5f37942c2&namespace=phases&new=0&old=1"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link HgPermissionFilter#isWriteRequest(HttpServletRequest)} with a set of requests, which are used for a
|
||||
* push to a single changeset.
|
||||
*/
|
||||
@Test
|
||||
public void testIsWriteRequestWithMultipleChangesetsPush() {
|
||||
assertIsReadRequest(wireProtocol.capabilities());
|
||||
assertIsReadRequest(wireProtocol.batch(CMDS_HEADS_KNOWN_NODES.concat("ef5993bb4abb32a0565c347844c6d939fc4f4b98")));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsReadRequest(wireProtocol.branchmap());
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsWriteRequest(wireProtocol.unbundle(746L, "686173686564+95373ca7cd5371cb6c49bb755ee451d9ec585845"));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsWriteRequest(wireProtocol.pushkey("ef5993bb4abb32a0565c347844c6d939fc4f4b98&namespace=phases&new=0&old=1"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link HgPermissionFilter#isWriteRequest(HttpServletRequest)} with a set of requests, which are used for a
|
||||
* push of multiple branches to a new repository.
|
||||
*/
|
||||
@Test
|
||||
public void testIsWriteRequestWithMutlipleBranchesToNewRepositoryPush() {
|
||||
assertIsReadRequest(wireProtocol.capabilities());
|
||||
assertIsReadRequest(wireProtocol.batch(CMDS_HEADS_KNOWN_NODES.concat("ef5993bb4abb32a0565c347844c6d939fc4f4b98")));
|
||||
assertIsReadRequest(wireProtocol.known("c0ceccb3b2f0f5c977ff32b9337519e5f37942c2+187ddf37e237c370514487a0bb1a226f11a780b3+b5914611f84eae14543684b2721eec88b0edac12+8b63a323606f10c86b30465570c2574eb7a3a989"));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsWriteRequest(wireProtocol.unbundle(913L, "686173686564+6768033e216468247bd031a0a2d9876d79818f8f"));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsWriteRequest(wireProtocol.pushkey("ef5993bb4abb32a0565c347844c6d939fc4f4b98&namespace=phases&new=0&old=1"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests {@link HgPermissionFilter#isWriteRequest(HttpServletRequest)} with a set of requests, which are used for a
|
||||
* push of a bookmark.
|
||||
*/
|
||||
@Test
|
||||
public void testIsWriteRequestWithBookmarkPush() {
|
||||
assertIsReadRequest(wireProtocol.capabilities());
|
||||
assertIsReadRequest(wireProtocol.batch(CMDS_HEADS_KNOWN_NODES.concat("ef5993bb4abb32a0565c347844c6d939fc4f4b98")));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsReadRequest(wireProtocol.listkeys(BOOKMARKS));
|
||||
assertIsReadRequest(wireProtocol.listkeys(PHASES));
|
||||
assertIsWriteRequest(wireProtocol.pushkey("markone&namespace=bookmarks&new=ef5993bb4abb32a0565c347844c6d939fc4f4b98&old="));
|
||||
}
|
||||
|
||||
private void assertIsReadRequest(HttpServletRequest request) {
|
||||
assertFalse(filter.isWriteRequest(request));
|
||||
}
|
||||
|
||||
private void assertIsWriteRequest(HttpServletRequest request) {
|
||||
assertTrue(filter.isWriteRequest(request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package sonia.scm.web;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
public class WireProtocolRequestMockFactory {
|
||||
|
||||
public enum Namespace {
|
||||
PHASES, BOOKMARKS;
|
||||
}
|
||||
|
||||
public static final String CMDS_HEADS_KNOWN_NODES = "heads+%3Bknown+nodes%3D";
|
||||
|
||||
private String repositoryPath;
|
||||
|
||||
public WireProtocolRequestMockFactory(String repositoryPath) {
|
||||
this.repositoryPath = repositoryPath;
|
||||
}
|
||||
|
||||
public HttpServletRequest capabilities() {
|
||||
return base("GET", "?cmd=capabilities");
|
||||
}
|
||||
|
||||
public HttpServletRequest listkeys(Namespace namespace) {
|
||||
HttpServletRequest request = base("GET", "?cmd=capabilities");
|
||||
header(request, "vary", "X-HgArg-1");
|
||||
header(request, "x-hgarg-1", namespaceValue(namespace));
|
||||
return request;
|
||||
}
|
||||
|
||||
public HttpServletRequest branchmap() {
|
||||
return base("GET", "?cmd=branchmap");
|
||||
}
|
||||
|
||||
public HttpServletRequest batch(String... args) {
|
||||
HttpServletRequest request = base("GET", "?cmd=batch");
|
||||
args(request, "cmds", args);
|
||||
return request;
|
||||
}
|
||||
|
||||
public HttpServletRequest unbundle(long contentLength, String... heads) {
|
||||
HttpServletRequest request = base("POST", "?cmd=unbundle");
|
||||
header(request, "Content-Length", String.valueOf(contentLength));
|
||||
args(request, "heads", heads);
|
||||
return request;
|
||||
}
|
||||
|
||||
public HttpServletRequest pushkey(String... keys) {
|
||||
HttpServletRequest request = base("POST", "?cmd=pushkey");
|
||||
args(request, "key", keys);
|
||||
return request;
|
||||
}
|
||||
|
||||
public HttpServletRequest known(String... nodes) {
|
||||
HttpServletRequest request = base("POST", "?cmd=pushkey");
|
||||
args(request, "nodes", nodes);
|
||||
return request;
|
||||
}
|
||||
|
||||
private void args(HttpServletRequest request, String prefix, String[] values) {
|
||||
StringBuilder vary = new StringBuilder();
|
||||
for ( int i=0; i<values.length; i++ ) {
|
||||
if (i>0) {
|
||||
vary.append(",");
|
||||
}
|
||||
vary.append("X-HgArg-" + (i+1));
|
||||
header(request, "X-HgArg-" + (i+1), prefix + "=" + values[i]);
|
||||
}
|
||||
header(request, "Vary", vary.toString());
|
||||
}
|
||||
|
||||
private HttpServletRequest base(String method, String queryStringValue) {
|
||||
HttpServletRequest request = mock(HttpServletRequest.class);
|
||||
|
||||
when(request.getRequestURI()).thenReturn(repositoryPath);
|
||||
when(request.getMethod()).thenReturn(method);
|
||||
|
||||
queryString(request, queryStringValue);
|
||||
|
||||
header(request, "Accept", "application/mercurial-0.1");
|
||||
header(request, "Accept-Encoding", "identity");
|
||||
header(request, "User-Agent", "mercurial/proto-1.0 (Mercurial 4.3.1)");
|
||||
return request;
|
||||
}
|
||||
|
||||
private void queryString(HttpServletRequest request, String queryString) {
|
||||
when(request.getQueryString()).thenReturn(queryString);
|
||||
}
|
||||
|
||||
private void header(HttpServletRequest request, String header, String value) {
|
||||
when(request.getHeader(header)).thenReturn(value);
|
||||
}
|
||||
|
||||
private String namespaceValue(Namespace namespace) {
|
||||
return "namespace=" + namespace.toString().toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user