mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
feat(prompt/prompter.go):add test case for prompter.go
This commit is contained in:
parent
804d45cc2e
commit
79a74c7ebe
1 changed files with 74 additions and 0 deletions
74
console/prompt/prompter_test.go
Normal file
74
console/prompt/prompter_test.go
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
package prompt_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/console/prompt"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPromptInput(t *testing.T) {
|
||||||
|
// Simulate user input
|
||||||
|
mockInput := "test input\n"
|
||||||
|
r, w, _ := os.Pipe()
|
||||||
|
w.WriteString(mockInput)
|
||||||
|
w.Close()
|
||||||
|
os.Stdin = r // Replace os.Stdin temporarily
|
||||||
|
|
||||||
|
// Create a new prompter
|
||||||
|
p := prompt.NewTerminalPrompter()
|
||||||
|
defer func() { os.Stdin = os.NewFile(uintptr(0), "/dev/tty") }() // Restore os.Stdin
|
||||||
|
|
||||||
|
// Test PromptInput
|
||||||
|
result, err := p.PromptInput("Enter something: ")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, strings.TrimSpace(mockInput), result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPromptPassword(t *testing.T) {
|
||||||
|
// Simulate password input
|
||||||
|
mockPassword := "secret\n"
|
||||||
|
r, w, _ := os.Pipe()
|
||||||
|
w.WriteString(mockPassword)
|
||||||
|
w.Close()
|
||||||
|
os.Stdin = r // Replace os.Stdin temporarily
|
||||||
|
|
||||||
|
// Create a new prompter
|
||||||
|
p := prompt.NewTerminalPrompter()
|
||||||
|
defer func() { os.Stdin = os.NewFile(uintptr(0), "/dev/tty") }() // Restore os.Stdin
|
||||||
|
|
||||||
|
// Test PromptPassword
|
||||||
|
result, err := p.PromptPassword("Enter password: ")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, strings.TrimSpace(mockPassword), result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mockStdin(input string) (restore func()) {
|
||||||
|
// Create a pipe to replace stdin
|
||||||
|
r, w, _ := os.Pipe()
|
||||||
|
w.WriteString(input)
|
||||||
|
w.Close()
|
||||||
|
|
||||||
|
// Replace os.Stdin with the pipe
|
||||||
|
originalStdin := os.Stdin
|
||||||
|
os.Stdin = r
|
||||||
|
|
||||||
|
// Return a function to restore original stdin
|
||||||
|
return func() {
|
||||||
|
os.Stdin = originalStdin
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPromptConfirm(t *testing.T) {
|
||||||
|
// Test confirmation (yes)
|
||||||
|
mockInput := "y\n"
|
||||||
|
restore := mockStdin(mockInput)
|
||||||
|
defer restore()
|
||||||
|
|
||||||
|
p := prompt.NewTerminalPrompter()
|
||||||
|
result, err := p.PromptConfirm("Do you confirm?")
|
||||||
|
assert.NoError(t, err, "Expected no error for valid input")
|
||||||
|
assert.True(t, result, "Expected confirmation to return true")
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue