github.com/tommi2day/gomodules/pwlib@v0.0.0-20230217211148-82cdbcf0a79d/get_password_test.go (about) 1 package pwlib 2 3 import ( 4 "github.com/tommi2day/gomodules/common" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 const plain = ` 13 # Testfile 14 !default:defuser2:failure 15 !default:testuser:default 16 test:testuser:testpass 17 testdp:testuser:xxx:yyy 18 !default:defuser2:default 19 !default:testuser:failure 20 !default:defuser:default 21 ` 22 23 func TestCrypt(t *testing.T) { 24 // prepare 25 methods := []string{typeGO, typeOpenssl} 26 for _, m := range methods { 27 app := "test_encrypt_" + m 28 SetConfig(app, TestData, TestData, app, m) 29 30 err := os.Chdir(TestDir) 31 require.NoErrorf(t, err, "ChDir failed") 32 filename := PwConfig.PlainTextFile 33 _ = os.Remove(filename) 34 //nolint gosec 35 err = os.WriteFile(filename, []byte(plain), 0644) 36 require.NoErrorf(t, err, "Create testdata failed") 37 _, _, err = GenRsaKey(PwConfig.PubKeyFile, PwConfig.PrivateKeyFile, PwConfig.KeyPass) 38 require.NoErrorf(t, err, "Prepare Key failed:%s", err) 39 40 // run 41 t.Run("default Encrypt File method "+m, func(t *testing.T) { 42 err := EncryptFile() 43 assert.NoErrorf(t, err, "Encryption failed: %s", err) 44 assert.FileExists(t, PwConfig.CryptedFile) 45 }) 46 t.Run("default Decrypt File method "+m, func(t *testing.T) { 47 plain, err := common.ReadFileByLine(PwConfig.PlainTextFile) 48 require.NoErrorf(t, err, "PlainTextfile %s not readable:%s", err) 49 expected := len(plain) 50 content, err := DecryptFile() 51 assert.NoErrorf(t, err, "Decryption failed: %s", err) 52 assert.NotEmpty(t, content) 53 actual := len(content) 54 assert.Equalf(t, expected, actual, "Lines misamtch exp:%d,act:%d", expected, actual) 55 }) 56 } 57 58 } 59 func TestGetPassword(t *testing.T) { 60 // prepare 61 type testTableType struct { 62 name string 63 account string 64 system string 65 answer string 66 hasError bool 67 } 68 app := "test_get_pass" 69 SetConfig(app, TestData, TestData, app, typeGO) 70 err := os.Chdir(TestDir) 71 require.NoErrorf(t, err, "ChDir failed") 72 filename := PwConfig.PlainTextFile 73 _ = os.Remove(filename) 74 //nolint gosec 75 err = os.WriteFile(filename, []byte(plain), 0644) 76 require.NoErrorf(t, err, "Create testdata failed") 77 _, _, err = GenRsaKey(PwConfig.PubKeyFile, PwConfig.PrivateKeyFile, PwConfig.KeyPass) 78 require.NoErrorf(t, err, "Prepare Key failed:%s", err) 79 err = EncryptFile() 80 require.NoErrorf(t, err, "Encrypt Plain failed:%s", err) 81 _, err = ListPasswords() 82 require.NoErrorf(t, err, "List failed:%s", err) 83 84 // run 85 for _, testConfig := range []testTableType{ 86 { 87 name: "direct match", 88 account: "testuser", 89 system: "test", 90 answer: "testpass", 91 hasError: false, 92 }, 93 { 94 name: "default 1", 95 account: "defuser", 96 system: "", 97 answer: "default", 98 hasError: false, 99 }, 100 { 101 name: "default 2", 102 account: "defuser2", 103 system: "", 104 answer: "default", 105 hasError: false, 106 }, 107 { 108 name: "no input", 109 account: "", 110 system: "", 111 answer: "true", 112 hasError: true, 113 }, 114 { 115 name: "DP in Password", 116 account: "testuser", 117 system: "testdp", 118 answer: "xxx:yyy", 119 hasError: false, 120 }, 121 } { 122 t.Run(testConfig.name, func(t *testing.T) { 123 pass, err := GetPassword(testConfig.system, testConfig.account) 124 if testConfig.hasError { 125 assert.Error(t, err, "Expected Error not thrown") 126 } else { 127 assert.NoErrorf(t, err, "Got unexpected error: %s", err) 128 assert.Equal(t, testConfig.answer, pass, "Answer not expected. exp:%s,act:%s", testConfig.answer, pass) 129 } 130 }) 131 } 132 }