mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
4dce8f9496
* adjust session refresh to always occur (for disabled users) * feat: adds filtering option for Request Method in ACL's * simplify flow of internal/authorization/authorizer.go's methods * implement query string checking * utilize authorizer.Object fully * make matchers uniform * add tests * add missing request methods * add frontend enhancements to handle request method * add request method to 1FA Handler Suite * add internal ACL representations (preparsing) * expand on access_control next * add docs * remove unnecessary slice for network names and instead just use a plain string * add warning for ineffectual bypass policy (due to subjects) * add user/group wildcard support * fix(authorization): allow subject rules to match anonymous users * feat(api): add new params * docs(api): wording adjustments * test: add request method into testing and proxy docs * test: add several checks and refactor schema validation for ACL * test: add integration test for methods acl * refactor: apply suggestions from code review * docs(authorization): update description
120 lines
3.0 KiB
Go
120 lines
3.0 KiB
Go
package utils
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestShouldSplitIntoEvenStringsOfFour(t *testing.T) {
|
|
input := testStringInput
|
|
|
|
arrayOfStrings := SliceString(input, 4)
|
|
|
|
assert.Equal(t, len(arrayOfStrings), 3)
|
|
assert.Equal(t, "abcd", arrayOfStrings[0])
|
|
assert.Equal(t, "efgh", arrayOfStrings[1])
|
|
assert.Equal(t, "ijkl", arrayOfStrings[2])
|
|
}
|
|
|
|
func TestShouldSplitIntoEvenStringsOfOne(t *testing.T) {
|
|
input := testStringInput
|
|
|
|
arrayOfStrings := SliceString(input, 1)
|
|
|
|
assert.Equal(t, 12, len(arrayOfStrings))
|
|
assert.Equal(t, "a", arrayOfStrings[0])
|
|
assert.Equal(t, "b", arrayOfStrings[1])
|
|
assert.Equal(t, "c", arrayOfStrings[2])
|
|
assert.Equal(t, "d", arrayOfStrings[3])
|
|
assert.Equal(t, "l", arrayOfStrings[11])
|
|
}
|
|
|
|
func TestShouldSplitIntoUnevenStringsOfFour(t *testing.T) {
|
|
input := testStringInput + "m"
|
|
|
|
arrayOfStrings := SliceString(input, 4)
|
|
|
|
assert.Equal(t, len(arrayOfStrings), 4)
|
|
assert.Equal(t, "abcd", arrayOfStrings[0])
|
|
assert.Equal(t, "efgh", arrayOfStrings[1])
|
|
assert.Equal(t, "ijkl", arrayOfStrings[2])
|
|
assert.Equal(t, "m", arrayOfStrings[3])
|
|
}
|
|
|
|
func TestShouldFindSliceDifferencesDelta(t *testing.T) {
|
|
before := []string{"abc", "onetwothree"}
|
|
after := []string{"abc", "xyz"}
|
|
|
|
added, removed := StringSlicesDelta(before, after)
|
|
|
|
require.Len(t, added, 1)
|
|
require.Len(t, removed, 1)
|
|
assert.Equal(t, "onetwothree", removed[0])
|
|
assert.Equal(t, "xyz", added[0])
|
|
}
|
|
|
|
func TestShouldNotFindSliceDifferencesDelta(t *testing.T) {
|
|
before := []string{"abc", "onetwothree"}
|
|
after := []string{"abc", "onetwothree"}
|
|
|
|
added, removed := StringSlicesDelta(before, after)
|
|
|
|
require.Len(t, added, 0)
|
|
require.Len(t, removed, 0)
|
|
}
|
|
|
|
func TestShouldFindSliceDifferences(t *testing.T) {
|
|
a := []string{"abc", "onetwothree"}
|
|
b := []string{"abc", "xyz"}
|
|
|
|
assert.True(t, IsStringSlicesDifferent(a, b))
|
|
}
|
|
|
|
func TestShouldNotFindSliceDifferences(t *testing.T) {
|
|
a := []string{"abc", "onetwothree"}
|
|
b := []string{"abc", "onetwothree"}
|
|
|
|
assert.False(t, IsStringSlicesDifferent(a, b))
|
|
}
|
|
|
|
func TestShouldFindSliceDifferenceWhenDifferentLength(t *testing.T) {
|
|
a := []string{"abc", "onetwothree"}
|
|
b := []string{"abc", "onetwothree", "more"}
|
|
|
|
assert.True(t, IsStringSlicesDifferent(a, b))
|
|
}
|
|
|
|
func TestShouldFindStringInSliceContains(t *testing.T) {
|
|
a := "abc"
|
|
slice := []string{"abc", "onetwothree"}
|
|
|
|
assert.True(t, IsStringInSliceContains(a, slice))
|
|
}
|
|
|
|
func TestShouldNotFindStringInSliceContains(t *testing.T) {
|
|
a := "xyz"
|
|
slice := []string{"abc", "onetwothree"}
|
|
|
|
assert.False(t, IsStringInSliceContains(a, slice))
|
|
}
|
|
|
|
func TestShouldFindStringInSliceFold(t *testing.T) {
|
|
a := "xYz"
|
|
b := "AbC"
|
|
slice := []string{"XYz", "abc"}
|
|
|
|
assert.True(t, IsStringInSliceFold(a, slice))
|
|
assert.True(t, IsStringInSliceFold(b, slice))
|
|
}
|
|
|
|
func TestShouldNotFindStringInSliceFold(t *testing.T) {
|
|
a := "xyZ"
|
|
b := "ABc"
|
|
slice := []string{"cba", "zyx"}
|
|
|
|
assert.False(t, IsStringInSliceFold(a, slice))
|
|
assert.False(t, IsStringInSliceFold(b, slice))
|
|
}
|