test: collab tests (#314)

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

testscript/script_test.go             |  1 
testscript/testdata/repo-create.txtar | 18 +++++
testscript/testdata/repo-perms.txtar  | 89 +++++++++++++++++++++++++++++
3 files changed, 107 insertions(+), 1 deletion(-)

Detailed changes

testscript/script_test.go 🔗

@@ -45,6 +45,7 @@ func TestScript(t *testing.T) {
 		UpdateScripts: *update,
 		Cmds: map[string]func(ts *testscript.TestScript, neg bool, args []string){
 			"soft":     cmdSoft(admin1.Signer()),
+			"usoft":    cmdSoft(user1.Signer()),
 			"git":      cmdGit(key),
 			"mkfile":   cmdMkfile,
 			"dos2unix": cmdDos2Unix,

testscript/testdata/repo-create.txtar 🔗

@@ -1,7 +1,7 @@
 # vi: set ft=conf
 
 # convert crlf to lf on windows
-[windows] dos2unix tree.txt readme.md branch_list.1.txt
+[windows] dos2unix tree.txt readme.md branch_list.1.txt info.txt
 
 # create a repo
 soft repo create repo1 -d 'description' -H -p -n 'repo11'
@@ -25,6 +25,10 @@ git -C repo1 tag v0.1.0
 git -C repo1 push origin HEAD
 git -C repo1 push origin HEAD --tags
 
+# info
+soft repo info repo1
+cmp stdout info.txt
+
 # list tags
 soft repo tag list repo1
 stdout 'v0.1.0'
@@ -77,3 +81,15 @@ stdout branch1
 -- branch_list.1.txt --
 branch1
 master
+-- info.txt --
+Project Name: repo11
+Repository: repo1
+Description: description
+Private: true
+Hidden: true
+Mirror: false
+Default Branch: master
+Branches:
+  - master
+Tags:
+  - v0.1.0

testscript/testdata/repo-perms.txtar 🔗

@@ -0,0 +1,89 @@
+# vi: set ft=conf
+
+# convert crlf to lf on windows
+[windows] dos2unix info.txt
+
+# create a repo & user1 with admin
+soft repo create repo1 -p
+soft user create user1 -k "$USER1_AUTHORIZED_KEY"
+
+# setup repo
+git clone ssh://localhost:$SSH_PORT/repo1 repo1
+mkfile ./repo1/README.md '# Project\nfoo'
+git -C repo1 add -A
+git -C repo1 commit -m 'first'
+git -C repo1 tag v1.0.0
+git -C repo1 push origin HEAD
+git -C repo1 push origin HEAD --tags
+
+# admin can access it
+soft repo tree repo1
+soft repo blob repo1 README.md
+soft repo description repo1 'desc'
+soft repo project-name repo1 'proj'
+soft repo private repo1
+soft repo info repo1
+cmp stdout info.txt
+
+# verify no collab
+soft repo collab list repo1
+! stdout .
+
+# regular user can't access it
+! usoft repo info repo1
+stderr 'Unauthorized'
+! usoft repo tree repo1
+stderr 'Unauthorized'
+! usoft repo tag list repo1
+stderr 'Unauthorized'
+! usoft repo tag delete repo1 v1.0.0
+stderr 'Unauthorized'
+! usoft repo blob repo1 README.md
+stderr 'Unauthorized'
+! usoft repo description repo1
+stderr 'Unauthorized'
+! usoft repo description repo1 'new desc'
+stderr 'Unauthorized'
+! usoft repo project-name repo1
+stderr 'Unauthorized'
+! usoft repo private repo1 true
+stderr 'Unauthorized'
+! usoft repo private repo1
+stderr 'Unauthorized'
+! usoft repo rename repo1 repo11
+stderr 'Unauthorized'
+! usoft repo branch default repo1
+stderr 'Unauthorized'
+! usoft repo branch default repo1 main
+stderr 'Unauthorized'
+! usoft repo delete repo1
+stderr 'Unauthorized'
+
+# add user1 as collab
+soft repo collab add repo1 user1
+soft repo collab list repo1
+stdout user1
+usoft repo collab list repo1
+stdout user1
+
+# verify user1 has access now
+usoft repo info repo1
+cmp stdout info.txt
+
+# delete
+usoft repo delete repo1
+usoft repo list
+! stdout .
+
+-- info.txt --
+Project Name: proj
+Repository: repo1
+Description: desc
+Private: true
+Hidden: false
+Mirror: false
+Default Branch: master
+Branches:
+  - master
+Tags:
+  - v1.0.0