File: repo_collaborator_test.go

package info (click to toggle)
golang-code-gitea-sdk 0.17.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 760 kB
  • sloc: makefile: 107
file content (80 lines) | stat: -rw-r--r-- 2,914 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright 2021 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package gitea

import (
	"log"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestRepoCollaborator(t *testing.T) {
	log.Println("== TestRepoCollaborator ==")
	c := newTestClient()

	repo, _ := createTestRepo(t, "RepoCollaborators", c)
	createTestUser(t, "ping", c)
	createTestUser(t, "pong", c)
	defer func() {
		_, err := c.AdminDeleteUser("ping")
		assert.NoError(t, err)
		_, err = c.AdminDeleteUser("pong")
		assert.NoError(t, err)
	}()

	collaborators, _, err := c.ListCollaborators(repo.Owner.UserName, repo.Name, ListCollaboratorsOptions{})
	assert.NoError(t, err)
	assert.Len(t, collaborators, 0)

	mode := AccessModeAdmin
	resp, err := c.AddCollaborator(repo.Owner.UserName, repo.Name, "ping", AddCollaboratorOption{Permission: &mode})
	assert.NoError(t, err)
	assert.EqualValues(t, 204, resp.StatusCode)

	permissonPing, resp, err := c.CollaboratorPermission(repo.Owner.UserName, repo.Name, "ping")
	assert.NoError(t, err)
	assert.EqualValues(t, 200, resp.StatusCode)
	assert.EqualValues(t, AccessModeAdmin, permissonPing.Permission)
	assert.EqualValues(t, "ping", permissonPing.User.UserName)

	mode = AccessModeRead
	_, err = c.AddCollaborator(repo.Owner.UserName, repo.Name, "pong", AddCollaboratorOption{Permission: &mode})
	assert.NoError(t, err)

	permissonPong, resp, err := c.CollaboratorPermission(repo.Owner.UserName, repo.Name, "pong")
	assert.NoError(t, err)
	assert.EqualValues(t, 200, resp.StatusCode)
	assert.EqualValues(t, AccessModeRead, permissonPong.Permission)
	assert.EqualValues(t, "pong", permissonPong.User.UserName)

	collaborators, _, err = c.ListCollaborators(repo.Owner.UserName, repo.Name, ListCollaboratorsOptions{})
	assert.NoError(t, err)
	assert.Len(t, collaborators, 2)
	assert.EqualValues(t, []string{"ping", "pong"}, userToStringSlice(collaborators))

	reviewers, _, err := c.GetReviewers(repo.Owner.UserName, repo.Name)
	assert.NoError(t, err)
	assert.Len(t, reviewers, 3)
	assert.EqualValues(t, []string{"ping", "pong", "test01"}, userToStringSlice(reviewers))

	assignees, _, err := c.GetAssignees(repo.Owner.UserName, repo.Name)
	assert.NoError(t, err)
	assert.Len(t, assignees, 2)
	assert.EqualValues(t, []string{"ping", "test01"}, userToStringSlice(assignees))

	resp, err = c.DeleteCollaborator(repo.Owner.UserName, repo.Name, "ping")
	assert.NoError(t, err)
	assert.EqualValues(t, 204, resp.StatusCode)

	collaborators, _, err = c.ListCollaborators(repo.Owner.UserName, repo.Name, ListCollaboratorsOptions{})
	assert.NoError(t, err)
	assert.Len(t, collaborators, 1)

	permissonNotExists, resp, err := c.CollaboratorPermission(repo.Owner.UserName, repo.Name, "user_that_not_exists")
	assert.Error(t, err)
	assert.EqualValues(t, 404, resp.StatusCode)
	assert.Nil(t, permissonNotExists)
}