4
4
package dbtest
5
5
6
6
import (
7
+ "io/ioutil"
8
+ "net/url"
9
+ "os"
7
10
"testing"
8
11
9
12
"github.com/stretchr/testify/require"
@@ -26,3 +29,48 @@ func Setup(t *testing.T) db.DB {
26
29
func Cleanup (t * testing.T , database db.DB ) {
27
30
require .NoError (t , database .Close ())
28
31
}
32
+
33
+ func TestUserPasswordFromPasswordFile (t * testing.T ) {
34
+
35
+ tempFile , _ := ioutil .TempFile ("" , "testpassword" )
36
+ defer tempFile .Close ()
37
+ defer os .Remove (tempFile .Name ())
38
+
39
+ _ , writeErr := tempFile .WriteString (" testpassword " )
40
+ if writeErr != nil {
41
+ t .Fatalf ("Error writing to temporary file: %v" , writeErr )
42
+ }
43
+
44
+ testCases := []struct {
45
+ testName string
46
+ url string
47
+ expectedUsername string
48
+ expectedPassword string
49
+ }{
50
+ {
51
+ testName : "set username and password correctly from url and password file" ,
52
+ url :
"testscheme://[email protected] " ,
53
+ expectedUsername : "testuser" ,
54
+ expectedPassword : "testpassword" ,
55
+ },
56
+ }
57
+
58
+ for _ , tc := range testCases {
59
+ t .Run (tc .testName , func (t * testing.T ) {
60
+ u , _ := url .Parse (tc .url )
61
+
62
+ updatedUrl , err := db .SetUserPassword (u , tempFile .Name ())
63
+ if err != nil {
64
+ t .Errorf ("Unexpected error: %v" , err )
65
+ }
66
+
67
+ if u .User == nil || updatedUrl .User .Username () != tc .expectedUsername {
68
+ t .Errorf ("Username not set as expected. Got: %v, Expected: %v" , u .User , tc .expectedUsername )
69
+ }
70
+
71
+ if trimmedPassword , _ := updatedUrl .User .Password (); trimmedPassword != tc .expectedPassword {
72
+ t .Errorf ("Password not set as expected. Got: %v, Expected: %v" , trimmedPassword , tc .expectedPassword )
73
+ }
74
+ })
75
+ }
76
+ }
0 commit comments