pomerium/pkg/hpke/url_test.go
Caleb Doxsey 9e5eaa92c2
hpke: add hpke package (#3761)
* hpke: add hpke package

* Update pkg/hpke/url.go

Co-authored-by: bobby <1544881+desimone@users.noreply.github.com>

* Update pkg/hpke/url.go

Co-authored-by: bobby <1544881+desimone@users.noreply.github.com>

* Update pkg/hpke/url.go

Co-authored-by: bobby <1544881+desimone@users.noreply.github.com>

* gofmt

Co-authored-by: bobby <1544881+desimone@users.noreply.github.com>
2022-11-22 10:39:41 -07:00

37 lines
895 B
Go

package hpke
import (
"net/url"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEncryptURLValues(t *testing.T) {
k1, err := GeneratePrivateKey()
require.NoError(t, err)
k2, err := GeneratePrivateKey()
require.NoError(t, err)
encrypted, err := EncryptURLValues(k1, k2.PublicKey(), url.Values{
"a": {"b", "c"},
"x": {"y", "z"},
})
assert.NoError(t, err)
assert.True(t, encrypted.Has(ParamSenderPublicKey))
assert.True(t, encrypted.Has(ParamQuery))
assert.True(t, IsEncryptedURL(encrypted))
encrypted.Set("extra", "value")
encrypted.Set("a", "notb")
senderPublicKey, decrypted, err := DecryptURLValues(k2, encrypted)
assert.NoError(t, err)
assert.Equal(t, url.Values{
"a": {"b", "c"},
"x": {"y", "z"},
"extra": {"value"},
}, decrypted)
assert.Equal(t, k1.PublicKey().String(), senderPublicKey.String())
}