123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- // 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 models
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestIsUserAllowed(t *testing.T) {
- assert.NoError(t, PrepareTestDatabase())
-
- pt := &ProtectedTag{}
- allowed, err := pt.IsUserAllowed(1)
- assert.NoError(t, err)
- assert.False(t, allowed)
-
- pt = &ProtectedTag{
- AllowlistUserIDs: []int64{1},
- }
- allowed, err = pt.IsUserAllowed(1)
- assert.NoError(t, err)
- assert.True(t, allowed)
-
- allowed, err = pt.IsUserAllowed(2)
- assert.NoError(t, err)
- assert.False(t, allowed)
-
- pt = &ProtectedTag{
- AllowlistTeamIDs: []int64{1},
- }
- allowed, err = pt.IsUserAllowed(1)
- assert.NoError(t, err)
- assert.False(t, allowed)
-
- allowed, err = pt.IsUserAllowed(2)
- assert.NoError(t, err)
- assert.True(t, allowed)
-
- pt = &ProtectedTag{
- AllowlistUserIDs: []int64{1},
- AllowlistTeamIDs: []int64{1},
- }
- allowed, err = pt.IsUserAllowed(1)
- assert.NoError(t, err)
- assert.True(t, allowed)
-
- allowed, err = pt.IsUserAllowed(2)
- assert.NoError(t, err)
- assert.True(t, allowed)
- }
-
- func TestIsUserAllowedToControlTag(t *testing.T) {
- cases := []struct {
- name string
- userid int64
- allowed bool
- }{
- {
- name: "test",
- userid: 1,
- allowed: true,
- },
- {
- name: "test",
- userid: 3,
- allowed: true,
- },
- {
- name: "gitea",
- userid: 1,
- allowed: true,
- },
- {
- name: "gitea",
- userid: 3,
- allowed: false,
- },
- {
- name: "test-gitea",
- userid: 1,
- allowed: true,
- },
- {
- name: "test-gitea",
- userid: 3,
- allowed: false,
- },
- {
- name: "gitea-test",
- userid: 1,
- allowed: true,
- },
- {
- name: "gitea-test",
- userid: 3,
- allowed: true,
- },
- {
- name: "v-1",
- userid: 1,
- allowed: false,
- },
- {
- name: "v-1",
- userid: 2,
- allowed: true,
- },
- {
- name: "release",
- userid: 1,
- allowed: false,
- },
- }
-
- t.Run("Glob", func(t *testing.T) {
- protectedTags := []*ProtectedTag{
- {
- NamePattern: `*gitea`,
- AllowlistUserIDs: []int64{1},
- },
- {
- NamePattern: `v-*`,
- AllowlistUserIDs: []int64{2},
- },
- {
- NamePattern: "release",
- },
- }
-
- for n, c := range cases {
- isAllowed, err := IsUserAllowedToControlTag(protectedTags, c.name, c.userid)
- assert.NoError(t, err)
- assert.Equal(t, c.allowed, isAllowed, "case %d: error should match", n)
- }
- })
-
- t.Run("Regex", func(t *testing.T) {
- protectedTags := []*ProtectedTag{
- {
- NamePattern: `/gitea\z/`,
- AllowlistUserIDs: []int64{1},
- },
- {
- NamePattern: `/\Av-/`,
- AllowlistUserIDs: []int64{2},
- },
- {
- NamePattern: "/release/",
- },
- }
-
- for n, c := range cases {
- isAllowed, err := IsUserAllowedToControlTag(protectedTags, c.name, c.userid)
- assert.NoError(t, err)
- assert.Equal(t, c.allowed, isAllowed, "case %d: error should match", n)
- }
- })
- }
|