This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package glpikb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/example/glpi-ai-agent/internal/config"
|
||||
"github.com/example/glpi-ai-agent/internal/metrics"
|
||||
"github.com/example/glpi-ai-agent/internal/model"
|
||||
)
|
||||
|
||||
type fakeSource struct{}
|
||||
|
||||
func (fakeSource) DiscoverKnowledgeBasePath(context.Context, string) (string, error) {
|
||||
return "/Knowledge/KnowbaseItem", nil
|
||||
}
|
||||
func (fakeSource) ListKnowledgeBaseItems(context.Context, string, int, string) ([]model.GLPIKnowledgeItem, error) {
|
||||
return []model.GLPIKnowledgeItem{{ID: 12, Title: "Benutzerkonto gesperrt", Content: "<p>Bitte entsperren.</p>", CategoryIDs: []int64{9}, ModifiedAt: "now"}}, nil
|
||||
}
|
||||
func (fakeSource) GetCategories(context.Context) ([]model.Category, error) {
|
||||
return []model.Category{{ID: 2, Name: "Active Directory", KnowbaseCategoryID: 9}}, nil
|
||||
}
|
||||
|
||||
type fakeStore struct{ docs []model.KnowledgeDoc }
|
||||
|
||||
func (f *fakeStore) ReplaceExternalSource(_ context.Context, _ string, d []model.KnowledgeDoc) error {
|
||||
f.docs = append([]model.KnowledgeDoc(nil), d...)
|
||||
return nil
|
||||
}
|
||||
func (f *fakeStore) Count() int { return len(f.docs) }
|
||||
|
||||
func TestSyncMapsGLPIKBAndAutoReplyWhitelist(t *testing.T) {
|
||||
cfg := config.Config{DataDir: t.TempDir(), GLPIKBEnabled: true, GLPIKBPath: "auto", GLPIKBLimit: 50, GLPIKBSyncInterval: time.Minute, GLPIKBSource: "glpi-kb", GLPIKBAutoReply: true, GLPIKBAutoReplyCategoryIDs: []int64{9}, CommunicationLanguage: "de-DE", CommunicationStyle: "formal", GLPITimeout: time.Second}
|
||||
st := &fakeStore{}
|
||||
m := metrics.New()
|
||||
s := New(cfg, fakeSource{}, st, m)
|
||||
if err := s.Sync(context.Background()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(st.docs) != 1 {
|
||||
t.Fatalf("docs=%d", len(st.docs))
|
||||
}
|
||||
d := st.docs[0]
|
||||
if d.ID != "GLPI-KB-12" || !d.AutoReply || len(d.Categories) != 1 || d.Categories[0] != 2 || d.Text != "Bitte entsperren." {
|
||||
t.Fatalf("unexpected doc: %+v", d)
|
||||
}
|
||||
if _, err := filepath.Abs(cfg.DataDir); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user