Files
cgrates/ees/s3_test.go
2025-12-05 13:16:47 +01:00

123 lines
3.3 KiB
Go

/*
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
Copyright (C) ITsysCOM GmbH
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
*/
package ees
import (
"testing"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
)
func TestS3GetMetrics(t *testing.T) {
em := &utils.ExporterMetrics{}
pstr := &S3EE{
em: em,
}
result := pstr.GetMetrics()
if result == nil {
t.Errorf("GetMetrics() returned nil; expected a non-nil SafeMapStorage")
return
}
if result != em {
t.Errorf("GetMetrics() returned unexpected result; got %v, want %v", result, em)
}
}
func TestClose(t *testing.T) {
pstr := &S3EE{}
err := pstr.Close()
if err != nil {
t.Errorf("Close() returned an error: %v; expected nil", err)
}
}
func TestS3Cfg(t *testing.T) {
expectedCfg := &config.EventExporterCfg{}
pstr := &S3EE{
cfg: expectedCfg,
}
actualCfg := pstr.Cfg()
if actualCfg != expectedCfg {
t.Errorf("Cfg() = %v; expected %v", actualCfg, expectedCfg)
}
}
func TestParseOptsAllFieldsSet(t *testing.T) {
bucketID := "bucket"
folderPath := "folder"
region := "region"
key := "id"
secret := "key"
token := "token"
fps := true
stv := true
opts := &config.EventExporterOpts{
AWS: &config.AWSOpts{
S3BucketID: &bucketID,
S3FolderPath: &folderPath,
Region: &region,
Key: &key,
Secret: &secret,
Token: &token,
S3ForcePathStyle: &fps,
S3SkipTlsVerify: &stv,
},
}
expected := S3EE{
bucket: bucketID,
folderPath: folderPath,
awsRegion: region,
awsID: key,
awsKey: secret,
awsToken: token,
forcePathStyle: true,
skipTlsVerify: true,
}
s3ee := &S3EE{}
s3ee.parseOpts(opts)
if s3ee.bucket != expected.bucket {
t.Errorf("Expected bucket %s, got %s", expected.bucket, s3ee.bucket)
}
if s3ee.folderPath != expected.folderPath {
t.Errorf("Expected folderPath %s, got %s", expected.folderPath, s3ee.folderPath)
}
if s3ee.awsRegion != expected.awsRegion {
t.Errorf("Expected awsRegion %s, got %s", expected.awsRegion, s3ee.awsRegion)
}
if s3ee.awsID != expected.awsID {
t.Errorf("Expected awsID %s, got %s", expected.awsID, s3ee.awsID)
}
if s3ee.awsKey != expected.awsKey {
t.Errorf("Expected awsKey %s, got %s", expected.awsKey, s3ee.awsKey)
}
if s3ee.awsToken != expected.awsToken {
t.Errorf("Expected awsToken %s, got %s", expected.awsToken, s3ee.awsToken)
}
if s3ee.forcePathStyle != expected.forcePathStyle {
t.Errorf("Expected forcePathStyle %v, got %v", expected.forcePathStyle, s3ee.forcePathStyle)
}
if s3ee.skipTlsVerify != expected.skipTlsVerify {
t.Errorf("Expected skipTLSVerify %v, got %v", expected.skipTlsVerify, s3ee.skipTlsVerify)
}
}