Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

55 linhas
1.8 KiB

  1. package passkey
  2. import (
  3. "crypto/tls"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/QuantumNous/new-api/setting/system_setting"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestResolveOriginsRejectsInsecureConfiguredOriginUnlessAllowed(t *testing.T) {
  10. request := httptest.NewRequest("GET", "https://gateway.example", nil)
  11. settings := &system_setting.PasskeySettings{Origins: "http://gateway.example", AllowInsecureOrigin: false}
  12. _, err := resolveOrigins(request, settings)
  13. require.Error(t, err)
  14. settings.AllowInsecureOrigin = true
  15. origins, err := resolveOrigins(request, settings)
  16. require.NoError(t, err)
  17. require.Equal(t, []string{"http://gateway.example"}, origins)
  18. }
  19. func TestResolveOriginsUsesForwardedHTTPSAndRejectsUnsecuredPublicHost(t *testing.T) {
  20. settings := &system_setting.PasskeySettings{}
  21. request := httptest.NewRequest("GET", "http://gateway.example:8443", nil)
  22. request.Header.Set("X-Forwarded-Proto", "https, http")
  23. origins, err := resolveOrigins(request, settings)
  24. require.NoError(t, err)
  25. require.Equal(t, []string{"https://gateway.example:8443"}, origins)
  26. request = httptest.NewRequest("GET", "http://gateway.example", nil)
  27. _, err = resolveOrigins(request, settings)
  28. require.Error(t, err)
  29. }
  30. func TestResolveRPIDAndSchemeDetection(t *testing.T) {
  31. settings := &system_setting.PasskeySettings{}
  32. rpID, err := resolveRPID(nil, settings, []string{"https://gateway.example:8443"})
  33. require.NoError(t, err)
  34. require.Equal(t, "gateway.example", rpID)
  35. settings.RPID = " configured.example:9443 "
  36. rpID, err = resolveRPID(nil, settings, nil)
  37. require.NoError(t, err)
  38. require.Equal(t, "configured.example", rpID)
  39. request := httptest.NewRequest("GET", "http://localhost", nil)
  40. request.TLS = &tls.ConnectionState{}
  41. require.Equal(t, "https", detectScheme(request))
  42. require.Equal(t, "::1", hostWithoutPort("[::1]:443"))
  43. }