httpauth_test.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package common
  2. import (
  3. "os"
  4. "path/filepath"
  5. "runtime"
  6. "testing"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestBasicAuth(t *testing.T) {
  10. httpAuth, err := NewBasicAuthProvider("")
  11. require.NoError(t, err)
  12. require.False(t, httpAuth.IsEnabled())
  13. _, err = NewBasicAuthProvider("missing path")
  14. require.Error(t, err)
  15. authUserFile := filepath.Join(os.TempDir(), "http_users.txt")
  16. authUserData := []byte("test1:$2y$05$bcHSED7aO1cfLto6ZdDBOOKzlwftslVhtpIkRhAtSa4GuLmk5mola\n")
  17. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  18. require.NoError(t, err)
  19. httpAuth, err = NewBasicAuthProvider(authUserFile)
  20. require.NoError(t, err)
  21. require.True(t, httpAuth.IsEnabled())
  22. require.False(t, httpAuth.ValidateCredentials("test1", "wrong1"))
  23. require.False(t, httpAuth.ValidateCredentials("test2", "password2"))
  24. require.True(t, httpAuth.ValidateCredentials("test1", "password1"))
  25. authUserData = append(authUserData, []byte("test2:$1$OtSSTL8b$bmaCqEksI1e7rnZSjsIDR1\n")...)
  26. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  27. require.NoError(t, err)
  28. require.False(t, httpAuth.ValidateCredentials("test2", "wrong2"))
  29. require.True(t, httpAuth.ValidateCredentials("test2", "password2"))
  30. authUserData = append(authUserData, []byte("test2:$apr1$gLnIkRIf$Xr/6aJfmIrihP4b2N2tcs/\n")...)
  31. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  32. require.NoError(t, err)
  33. require.False(t, httpAuth.ValidateCredentials("test2", "wrong2"))
  34. require.True(t, httpAuth.ValidateCredentials("test2", "password2"))
  35. authUserData = append(authUserData, []byte("test3:$apr1$gLnIkRIf$Xr/6aJfmIrihP4b2N2tcs/\n")...)
  36. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  37. require.NoError(t, err)
  38. require.False(t, httpAuth.ValidateCredentials("test3", "password3"))
  39. authUserData = append(authUserData, []byte("test4:$invalid$gLnIkRIf$Xr/6$aJfmIr$ihP4b2N2tcs/\n")...)
  40. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  41. require.NoError(t, err)
  42. require.False(t, httpAuth.ValidateCredentials("test4", "password3"))
  43. if runtime.GOOS != "windows" {
  44. authUserData = append(authUserData, []byte("test5:$apr1$gLnIkRIf$Xr/6aJfmIrihP4b2N2tcs/\n")...)
  45. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  46. require.NoError(t, err)
  47. err = os.Chmod(authUserFile, 0001)
  48. require.NoError(t, err)
  49. require.False(t, httpAuth.ValidateCredentials("test5", "password2"))
  50. err = os.Chmod(authUserFile, os.ModePerm)
  51. require.NoError(t, err)
  52. }
  53. authUserData = append(authUserData, []byte("\"foo\"bar\"\r\n")...)
  54. err = os.WriteFile(authUserFile, authUserData, os.ModePerm)
  55. require.NoError(t, err)
  56. require.False(t, httpAuth.ValidateCredentials("test2", "password2"))
  57. err = os.Remove(authUserFile)
  58. require.NoError(t, err)
  59. }