feat(csvimport): validated CSV account parser

This commit is contained in:
2026-07-01 18:12:57 +07:00
parent 2def11a870
commit 7fe8896f4b
2 changed files with 90 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
package csvimport
import (
"strings"
"testing"
)
func TestParseOK(t *testing.T) {
rows, err := Parse(strings.NewReader("a@x,p1,a@y,p2\nb@x,p3,b@y,p4\n"))
if err != nil {
t.Fatalf("parse: %v", err)
}
if len(rows) != 2 || rows[0].SrcLogin != "a@x" || rows[1].DstPass != "p4" {
t.Fatalf("bad rows: %+v", rows)
}
}
func TestParseRejectsBadColumns(t *testing.T) {
if _, err := Parse(strings.NewReader("a,b,c\n")); err == nil {
t.Fatal("3 columns must error")
}
}
func TestParseRejectsDuplicateSrc(t *testing.T) {
if _, err := Parse(strings.NewReader("a@x,p,a@y,p\na@x,q,c@y,q\n")); err == nil {
t.Fatal("duplicate src_login must error")
}
}
func TestParseRejectsEmptyField(t *testing.T) {
if _, err := Parse(strings.NewReader("a@x,,a@y,p\n")); err == nil {
t.Fatal("empty password must error")
}
}