signature_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package security
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. "github.com/stretchr/testify/suite"
  6. "github.com/imgproxy/imgproxy/v3/config"
  7. )
  8. type SignatureTestSuite struct {
  9. suite.Suite
  10. }
  11. func (s *SignatureTestSuite) SetupTest() {
  12. config.Reset()
  13. config.Keys = [][]byte{[]byte("test-key")}
  14. config.Salts = [][]byte{[]byte("test-salt")}
  15. }
  16. func (s *SignatureTestSuite) TestVerifySignature() {
  17. err := VerifySignature("dtLwhdnPPiu_epMl1LrzheLpvHas-4mwvY6L3Z8WwlY", "asd")
  18. require.Nil(s.T(), err)
  19. }
  20. func (s *SignatureTestSuite) TestVerifySignatureTruncated() {
  21. config.SignatureSize = 8
  22. err := VerifySignature("dtLwhdnPPis", "asd")
  23. require.Nil(s.T(), err)
  24. }
  25. func (s *SignatureTestSuite) TestVerifySignatureInvalid() {
  26. err := VerifySignature("dtLwhdnPPis", "asd")
  27. require.Error(s.T(), err)
  28. }
  29. func (s *SignatureTestSuite) TestVerifySignatureMultiplePairs() {
  30. config.Keys = append(config.Keys, []byte("test-key2"))
  31. config.Salts = append(config.Salts, []byte("test-salt2"))
  32. err := VerifySignature("dtLwhdnPPiu_epMl1LrzheLpvHas-4mwvY6L3Z8WwlY", "asd")
  33. require.Nil(s.T(), err)
  34. err = VerifySignature("jbDffNPt1-XBgDccsaE-XJB9lx8JIJqdeYIZKgOqZpg", "asd")
  35. require.Nil(s.T(), err)
  36. err = VerifySignature("dtLwhdnPPis", "asd")
  37. require.Error(s.T(), err)
  38. }
  39. func (s *SignatureTestSuite) TestVerifySignatureTrusted() {
  40. config.TrustedSignatures = []string{"truested"}
  41. defer func() {
  42. config.TrustedSignatures = []string{}
  43. }()
  44. err := VerifySignature("truested", "asd")
  45. require.Nil(s.T(), err)
  46. err = VerifySignature("untrusted", "asd")
  47. require.Error(s.T(), err)
  48. }
  49. func TestSignature(t *testing.T) {
  50. suite.Run(t, new(SignatureTestSuite))
  51. }