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  }