Add coverage tests on engine

This commit is contained in:
armirveliaj
2024-09-12 09:58:50 -04:00
committed by Dan Christian Bogos
parent de77f9b363
commit f669be786a
2 changed files with 149 additions and 0 deletions

View File

@@ -20,6 +20,8 @@ package engine
import (
"encoding/csv"
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"strings"
@@ -300,3 +302,74 @@ func TestCsvURLRead(t *testing.T) {
}
}
}
func TestCsvURLOpenSuccess(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("field1,field2,field3\nvalue1,value2,value3\n"))
}))
defer server.Close()
c := &csvURL{}
err := c.Open(server.URL, ',', 3)
if err != nil {
t.Fatalf("expected no error, got: %v", err)
}
if c.csvReader == nil {
t.Fatalf("expected csvReader to be initialized")
}
record, err := c.csvReader.Read()
if err != nil {
t.Fatalf("expected no error while reading CSV, got: %v", err)
}
expectedRecord := []string{"field1", "field2", "field3"}
for i, field := range expectedRecord {
if record[i] != field {
t.Errorf("expected field %s, got: %s", field, record[i])
}
}
}
func TestCsvURLOpenInvalidURL(t *testing.T) {
c := &csvURL{}
err := c.Open("invalid-url", ',', 3)
if err == nil {
t.Fatalf("expected an error for invalid URL, got none")
}
}
func TestCsvURLOpenNotFound(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNotFound)
}))
defer server.Close()
c := &csvURL{}
err := c.Open(server.URL, ',', 3)
if err == nil {
t.Fatalf("expected ErrNotFound, got none")
}
}
func TestCsvURLOpenPathNotReachable(t *testing.T) {
c := &csvURL{}
err := c.Open("http://invalid.localhost", ',', 3)
if err == nil {
t.Fatalf("expected path not reachable error, got none")
}
}
func TestCsvURLClosePageNotNil(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("CsvUrlClose"))
}))
defer server.Close()
c := &csvURL{}
resp, err := http.Get(server.URL)
if err != nil {
t.Fatalf("expected no error while getting mock URL, got: %v", err)
}
c.page = resp.Body
c.Close()
}

View File

@@ -22,7 +22,9 @@ import (
"fmt"
"testing"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/utils"
"gorm.io/gorm"
)
func TestGetStorageTypes(t *testing.T) {
@@ -115,3 +117,77 @@ func TestAppendToMysqlDSNOptsBasic(t *testing.T) {
t.Errorf("AppendToMysqlDSNOpts(nil) = %s; want %s", result, utils.EmptyString)
}
}
func TestMongoGetContext(t *testing.T) {
testCtx := context.Background()
ms := &MongoStorage{
ctx: testCtx,
}
gotCtx := ms.GetContext()
if gotCtx != testCtx {
t.Errorf("GetContext() = %v; want %v", gotCtx, testCtx)
}
}
func TestMongoSelectDatabase(t *testing.T) {
initialDB := "mongo"
ms := &MongoStorage{
db: initialDB,
}
newDB := "db"
if err := ms.SelectDatabase(newDB); err != nil {
t.Errorf("SelectDatabase() returned an error: %v", err)
}
if got := ms.db; got != newDB {
t.Errorf("SelectDatabase() updated db to %v, want %v", got, newDB)
}
}
func TestMongoGetStorageType(t *testing.T) {
ms := &MongoStorage{}
storageType := ms.GetStorageType()
expectedStorageType := utils.MetaMongo
if storageType != expectedStorageType {
t.Errorf("Expected storage type: %s, got: %s", expectedStorageType, storageType)
}
}
func TestRemoveKeysForPrefix(t *testing.T) {
sqlStorage := SQLStorage{}
testPrefix := "644"
err := sqlStorage.RemoveKeysForPrefix(testPrefix)
if err != utils.ErrNotImplemented {
t.Errorf("Expected error: %v, got: %v", utils.ErrNotImplemented, err)
}
}
func TestGetKeysForPrefix(t *testing.T) {
sqlStorage := SQLStorage{}
testPrefix := "390"
keys, err := sqlStorage.GetKeysForPrefix(testPrefix)
if err != utils.ErrNotImplemented {
t.Errorf("Expected error: %v, got: %v", utils.ErrNotImplemented, err)
}
if keys != nil {
t.Errorf("Expected keys to be nil, got: %v", keys)
}
}
func TestMysqlSelectDatabase(t *testing.T) {
sqlStorage := SQLStorage{}
testDBName := "mysql"
err := sqlStorage.SelectDatabase(testDBName)
if err != nil {
t.Errorf("Expected nil error, got: %v", err)
}
}
func TestExportGormDB(t *testing.T) {
mockDB := &gorm.DB{}
sqlStorage := &SQLStorage{
db: mockDB,
}
resultDB := sqlStorage.ExportGormDB()
if resultDB != mockDB {
t.Errorf("ExportGormDB() = %v; want %v", resultDB, mockDB)
}
}