github.com/pusher/oauth2_proxy@v3.2.0+incompatible/htpasswd_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "golang.org/x/crypto/bcrypt" 10 ) 11 12 func TestSHA(t *testing.T) { 13 file := bytes.NewBuffer([]byte("testuser:{SHA}PaVBVZkYqAjCQCu6UBL2xgsnZhw=\n")) 14 h, err := NewHtpasswd(file) 15 assert.Equal(t, err, nil) 16 17 valid := h.Validate("testuser", "asdf") 18 assert.Equal(t, valid, true) 19 } 20 21 func TestBcrypt(t *testing.T) { 22 hash1, err := bcrypt.GenerateFromPassword([]byte("password"), 1) 23 assert.Equal(t, err, nil) 24 hash2, err := bcrypt.GenerateFromPassword([]byte("top-secret"), 2) 25 assert.Equal(t, err, nil) 26 27 contents := fmt.Sprintf("testuser1:%s\ntestuser2:%s\n", hash1, hash2) 28 file := bytes.NewBuffer([]byte(contents)) 29 30 h, err := NewHtpasswd(file) 31 assert.Equal(t, err, nil) 32 33 valid := h.Validate("testuser1", "password") 34 assert.Equal(t, valid, true) 35 36 valid = h.Validate("testuser2", "top-secret") 37 assert.Equal(t, valid, true) 38 }