Improve code coverage for PM File Converter (Go)
[nonrtric/plt/ranpm.git] / pm-file-converter / components / miniocollector / miniocollector_test.go
diff --git a/pm-file-converter/components/miniocollector/miniocollector_test.go b/pm-file-converter/components/miniocollector/miniocollector_test.go
new file mode 100644 (file)
index 0000000..17327a8
--- /dev/null
@@ -0,0 +1,175 @@
+package miniocollector
+
+import (
+       "bytes"
+       "context"
+       "io"
+       "log"
+       "os"
+       "testing"
+
+       "github.com/minio/minio-go/v7"
+       "github.com/minio/minio-go/v7/pkg/credentials"
+       "github.com/stretchr/testify/assert"
+)
+
+func TestMake_minio_bucket(t *testing.T) {
+
+       endpoint := "play.min.io:9000"
+       accessKey := "Q3AM3UQ867SPQQA43P2F"
+       secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
+
+       minioClient, err := minio.New(endpoint, &minio.Options{
+               Creds:  credentials.NewStaticV4(accessKey, secretKey, ""),
+               Secure: true,
+       })
+       if err != nil {
+               log.Fatalf("Error creating Minio client: %v", err)
+       }
+
+       if _, err := minioClient.ListBuckets(context.Background()); err != nil {
+               log.Fatalf("Error connecting to Minio server: %v", err)
+       }
+
+       // Create a test bucket.
+       bucketName := "my-test-bucket"
+       err = create_minio_bucket(minioClient, bucketName)
+       if err != nil {
+               log.Fatalf("Error creating bucket: %v", err)
+       } else {
+               assert.NoError(t, err)
+       }
+}
+
+func Test_bucket_cannot_empty(t *testing.T) {
+
+       endpoint := "play.min.io:9000"
+       accessKey := "Q3AM3UQ867SPQQA43P2F"
+       secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
+
+       minioClient, err := minio.New(endpoint, &minio.Options{
+               Creds:  credentials.NewStaticV4(accessKey, secretKey, ""),
+               Secure: true,
+       })
+       if err != nil {
+               log.Fatalf("Error creating Minio client: %v", err)
+       }
+
+       if _, err := minioClient.ListBuckets(context.Background()); err != nil {
+               log.Fatalf("Error connecting to Minio server: %v", err)
+       }
+
+       // Create a test bucket.
+       bucketName := ""
+       err = create_minio_bucket(minioClient, bucketName)
+       if err != nil {
+               assert.Error(t, err)
+       } else {
+               assert.NoError(t, err)
+       }
+}
+
+func Test_check_minio_bucket(t *testing.T) {
+
+       endpoint := "play.min.io:9000"
+       accessKey := "Q3AM3UQ867SPQQA43P2F"
+       secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
+
+       found := false
+
+       minioClient, err := minio.New(endpoint, &minio.Options{
+               Creds:  credentials.NewStaticV4(accessKey, secretKey, ""),
+               Secure: true,
+       })
+       if err != nil {
+               log.Fatalf("Error creating Minio client: %v", err)
+       }
+
+       if _, err := minioClient.ListBuckets(context.Background()); err != nil {
+               log.Fatalf("Error connecting to Minio server: %v", err)
+       }
+
+       // Create a test bucket.
+       bucketName := "my-test-bucket"
+       found = check_minio_bucket(minioClient, bucketName)
+       if found {
+               assert.True(t, found)
+       } else {
+               assert.False(t, found)
+       }
+}
+
+func Test_bucket_not_exists(t *testing.T) {
+
+       endpoint := "play.min.io:9000"
+       accessKey := "Q3AM3UQ867SPQQA43P2F"
+       secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
+
+       found := false
+
+       minioClient, err := minio.New(endpoint, &minio.Options{
+               Creds:  credentials.NewStaticV4(accessKey, secretKey, ""),
+               Secure: true,
+       })
+       if err != nil {
+               log.Fatalf("Error creating Minio client: %v", err)
+       }
+
+       if _, err := minioClient.ListBuckets(context.Background()); err != nil {
+               log.Fatalf("Error connecting to Minio server: %v", err)
+       }
+
+       // Create a test bucket.
+       bucketName := "my-test-bucket-not-exists"
+       found = check_minio_bucket(minioClient, bucketName)
+       if found {
+               assert.True(t, found)
+       } else {
+               assert.False(t, found)
+       }
+}
+
+func Test_upload_object(t *testing.T) {
+
+       endpoint := "play.min.io:9000"
+       accessKey := "Q3AM3UQ867SPQQA43P2F"
+       secretKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
+
+       minioClient, err := minio.New(endpoint, &minio.Options{
+               Creds:  credentials.NewStaticV4(accessKey, secretKey, ""),
+               Secure: true,
+       })
+       if err != nil {
+               log.Fatalf("Error creating Minio client: %v", err)
+       }
+
+       if _, err := minioClient.ListBuckets(context.Background()); err != nil {
+               log.Fatalf("Error connecting to Minio server: %v", err)
+       }
+
+       json_filename := "minio_upload_test.json"
+
+       fi, err := os.Open(json_filename)
+
+       if err != nil {
+               t.Fatalf("File %s - cannot be opened  - discarding message, error details: %s", json_filename, err.Error())
+       }
+       defer fi.Close()
+
+       reader := fi
+
+       var buf3 bytes.Buffer
+       _, err2 := io.Copy(&buf3, reader)
+       if err2 != nil {
+               t.Fatalf("File %s - cannot be read, discarding message, %s", json_filename, err.Error())
+               return
+       }
+       file_bytes := buf3.Bytes()
+
+       // Create a test bucket.
+       bucketName := "my-test-bucket"
+       upload_object(minioClient, file_bytes, "minio_upload_test.json", bucketName)
+
+       assert.NoError(t, err)
+
+}