mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-10 15:47:36 +02:00
urlutil: add time validation functions (#3776)
This commit is contained in:
parent
457fca08dc
commit
090601873f
3 changed files with 111 additions and 1 deletions
63
internal/urlutil/time_test.go
Normal file
63
internal/urlutil/time_test.go
Normal file
|
@ -0,0 +1,63 @@
|
|||
package urlutil
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestBuildTimeParameters(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
params := make(url.Values)
|
||||
BuildTimeParameters(params, time.Minute)
|
||||
assert.True(t, params.Has(QueryIssued))
|
||||
assert.True(t, params.Has(QueryExpiry))
|
||||
|
||||
ms1, _ := strconv.Atoi(params.Get(QueryIssued))
|
||||
ms2, _ := strconv.Atoi(params.Get(QueryExpiry))
|
||||
assert.Equal(t, 60000, ms2-ms1)
|
||||
}
|
||||
|
||||
func TestValidateTimeParameters(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
msNow := time.Now().UnixMilli()
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
params url.Values
|
||||
err string
|
||||
}{
|
||||
{"empty", url.Values{}, "invalid issued timestamp"},
|
||||
{"missing issued", url.Values{QueryExpiry: {fmt.Sprint(msNow + 10000)}}, "invalid issued timestamp"},
|
||||
{"missing expiry", url.Values{QueryIssued: {fmt.Sprint(msNow + 10000)}}, "invalid expiry timestamp"},
|
||||
{"invalid issued", url.Values{
|
||||
QueryIssued: {fmt.Sprint(msNow + 120000)},
|
||||
QueryExpiry: {fmt.Sprint(msNow + 240000)},
|
||||
}, "issued in the future"},
|
||||
{"invalid expiry", url.Values{
|
||||
QueryIssued: {fmt.Sprint(msNow - 120000)},
|
||||
QueryExpiry: {fmt.Sprint(msNow - 240000)},
|
||||
}, "expired"},
|
||||
{"valid", url.Values{
|
||||
QueryIssued: {fmt.Sprint(msNow)},
|
||||
QueryExpiry: {fmt.Sprint(msNow)},
|
||||
}, ""},
|
||||
} {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
err := ValidateTimeParameters(tc.params)
|
||||
if tc.err == "" {
|
||||
assert.NoError(t, err)
|
||||
} else {
|
||||
assert.ErrorContains(t, err, tc.err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue