51 lines
1 KiB
Go
51 lines
1 KiB
Go
package patterns
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestRepository_Load(t *testing.T) {
|
|
content := `
|
|
patterns:
|
|
test_service:
|
|
extractors:
|
|
- name: "test_pattern"
|
|
regex: '^Test (?P<id>\d+) (?P<value>\d+\.\d+)$'
|
|
fields:
|
|
id: "int"
|
|
value: "float"
|
|
`
|
|
tmpfile, err := os.CreateTemp("", "patterns_test_*.yaml")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Remove(tmpfile.Name())
|
|
|
|
if _, err := tmpfile.Write([]byte(content)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := tmpfile.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
repo := GetInstance()
|
|
err = repo.Load(tmpfile.Name())
|
|
if err != nil {
|
|
t.Fatalf("Failed to load repository: %v", err)
|
|
}
|
|
|
|
extractors := repo.GetExtractors("test_service")
|
|
if len(extractors) != 1 {
|
|
t.Errorf("Expected 1 extractor, got %d", len(extractors))
|
|
}
|
|
|
|
ext := extractors[0]
|
|
if ext.Name != "test_pattern" {
|
|
t.Errorf("Expected name 'test_pattern', got '%s'", ext.Name)
|
|
}
|
|
|
|
if !ext.Pattern.MatchString("Test 123 45.67") {
|
|
t.Error("Regex did not match valid string")
|
|
}
|
|
}
|