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 }