github.com/avenga/couper@v1.12.2/accesscontrol/basic_auth_internal_test.go (about)

     1  package accesscontrol
     2  
     3  import "testing"
     4  
     5  func Test_Apr1MD5(t *testing.T) {
     6  	var exp, res string
     7  
     8  	exp = "$apr1$NPXZYWba$/ebZ19mhDyKnsuM/cRaxq0"
     9  	res = string(apr1MD5("xxx", "NPXZYWba", "$apr1$"))
    10  	if exp != res {
    11  		t.Errorf("Got unexpected password: '%s', want '%s'", res, exp)
    12  	}
    13  
    14  	exp = "$apr1$4z8NMYQV$TexsH1pVjUbkarHcVB2q/0"
    15  	res = string(apr1MD5("s", "4z8NMYQV", "$apr1$"))
    16  	if exp != res {
    17  		t.Errorf("Got unexpected password: '%s', want '%s'", res, exp)
    18  	}
    19  }
    20  
    21  func Test_ValidateAccessData(t *testing.T) {
    22  	var data htData = make(htData)
    23  	var pass string = "my-pass"
    24  
    25  	// $ htpasswd -bm .htpasswd john my-pass
    26  	// john:$apr1$9zGWAElT$VQXJ4anNzh6qGRCfHdrYF0
    27  	data["john"] = pwd{
    28  		pwdOrig:   []byte("$apr1$9zGWAElT$VQXJ4anNzh6qGRCfHdrYF0"),
    29  		pwdPrefix: "$apr1$",
    30  		pwdSalt:   "9zGWAElT",
    31  		pwdType:   pwdTypeApr1,
    32  	}
    33  
    34  	if !validateAccessData("john", pass, data) {
    35  		t.Error("Unexpected validation failure")
    36  	}
    37  
    38  	// $ htpasswd -bB .htpasswd jane my-pass
    39  	//jane:$2y$05$/uonQYUtwmVv.6AF38IhGeqlvIMPIM5jevzIQ.8RBENUgkCqbJYTm
    40  	data["jane"] = pwd{
    41  		pwdOrig:   []byte("$2y$05$/uonQYUtwmVv.6AF38IhGeqlvIMPIM5jevzIQ.8RBENUgkCqbJYTm"),
    42  		pwdPrefix: "$2y$",
    43  		pwdSalt:   "05",
    44  		pwdType:   pwdTypeBcrypt,
    45  	}
    46  
    47  	if !validateAccessData("jane", pass, data) {
    48  		t.Error("Unexpected validation failure")
    49  	}
    50  
    51  	if validateAccessData("foo", "bar", data) {
    52  		t.Error("Unexpected validation success")
    53  	}
    54  
    55  	// php -r 'echo crypt("my-pass")."\n";'
    56  	// $1$drjdAXLW$P9cBlaFpBbi2xszjrmUV11
    57  	data["jock"] = pwd{
    58  		pwdOrig:   []byte("$1$drjdAXLW$P9cBlaFpBbi2xszjrmUV11"),
    59  		pwdPrefix: "$1$",
    60  		pwdSalt:   "drjdAXLW",
    61  		pwdType:   pwdTypeMD5,
    62  	}
    63  
    64  	if !validateAccessData("jock", pass, data) {
    65  		t.Error("Unexpected validation failure")
    66  	}
    67  }