github.com/aiven/aiven-go-client@v1.36.0/kafka_schemas_acc_test.go (about)

     1  package aiven
     2  
     3  import (
     4  	"math/rand"
     5  	"os"
     6  	"strconv"
     7  	"time"
     8  
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Kafka", func() {
    14  	var (
    15  		projectName string
    16  		project     *Project
    17  		err         error
    18  	)
    19  
    20  	Context("Kafka Schemas CRUD", func() {
    21  		It("should not error", func() {
    22  			projectName = os.Getenv("AIVEN_PROJECT_NAME")
    23  			project, err = client.Projects.Get(projectName)
    24  
    25  			Expect(err).NotTo(HaveOccurred())
    26  		})
    27  
    28  		It("should populate fields properly", func() {
    29  			Expect(project).NotTo(BeNil())
    30  
    31  			if project != nil {
    32  				Expect(project.Name).NotTo(BeEmpty())
    33  			}
    34  		})
    35  
    36  		// kafka service
    37  		var (
    38  			serviceName string
    39  			service     *Service
    40  			errS        error
    41  		)
    42  
    43  		It("creating service", func() {
    44  			serviceName = "test-acc-kafka-sc-" + strconv.Itoa(rand.Int())
    45  			service, errS = client.Services.Create(projectName, CreateServiceRequest{
    46  				Cloud:        "google-europe-west1",
    47  				Plan:         "business-4",
    48  				ProjectVPCID: nil,
    49  				ServiceName:  serviceName,
    50  				ServiceType:  "kafka",
    51  				UserConfig: map[string]interface{}{
    52  					"schema_registry": true,
    53  				},
    54  			})
    55  		})
    56  
    57  		It("should not error", func() {
    58  			Expect(errS).NotTo(HaveOccurred())
    59  		})
    60  
    61  		It("should populate fields properly", func() {
    62  			Expect(service).NotTo(BeNil())
    63  
    64  			if service != nil {
    65  				Expect(service.Name).NotTo(BeEmpty())
    66  				Expect(service.Plan).NotTo(BeEmpty())
    67  				Expect(service.Type).Should(Equal("kafka"))
    68  
    69  				Eventually(func() string {
    70  					service, _ = client.Services.Get(projectName, serviceName)
    71  					return service.State
    72  				}, 25*time.Minute, 1*time.Minute).Should(Equal("RUNNING"))
    73  			}
    74  		})
    75  
    76  		// kafka schema
    77  		var (
    78  			errR        error
    79  			errC        error
    80  			subjectName string
    81  		)
    82  
    83  		It("create kafka schema subject", func() {
    84  			time.Sleep(25 * time.Second)
    85  			_, errC = client.KafkaGlobalSchemaConfig.Update(projectName, serviceName, KafkaSchemaConfig{
    86  				CompatibilityLevel: "BACKWARD",
    87  			})
    88  
    89  			time.Sleep(25 * time.Second)
    90  			subjectName = "test-subj"
    91  			_, errR = client.KafkaSubjectSchemas.Add(projectName, serviceName, subjectName, KafkaSchemaSubject{
    92  				Schema: `{
    93  					"doc": "example",
    94  					"fields": [{
    95  						"default": 5,
    96  						"doc": "my test number",
    97  						"name": "test",
    98  						"namespace": "test",
    99  						"type": "int"
   100  					}],
   101  					"name": "example",
   102  					"namespace": "example",
   103  					"type": "record"
   104  				}`})
   105  		})
   106  
   107  		It("should not error global config", func() {
   108  			Expect(errC).NotTo(HaveOccurred())
   109  		})
   110  
   111  		It("should not error subject", func() {
   112  			Expect(errR).NotTo(HaveOccurred())
   113  		})
   114  
   115  		It("should populate fields properly", func() {
   116  			s, errG := client.KafkaSubjectSchemas.Get(projectName, serviceName, subjectName, 1)
   117  			Expect(errG).NotTo(HaveOccurred())
   118  			Expect(s).NotTo(BeNil())
   119  
   120  			if s != nil {
   121  				Expect(s.Version.Schema).NotTo(BeEmpty())
   122  				Expect(s.Version.Subject).NotTo(BeEmpty())
   123  				Expect(s.Version.Version).To(Equal(1))
   124  			}
   125  		})
   126  
   127  		It("should update configuration", func() {
   128  			_, err := client.KafkaSubjectSchemas.GetConfiguration(projectName, serviceName, subjectName)
   129  			Expect(err).To(HaveOccurred())
   130  			Expect(IsNotFound(err)).To(Equal(true))
   131  
   132  			s, errU := client.KafkaSubjectSchemas.UpdateConfiguration(projectName, serviceName, subjectName, "FORWARD")
   133  			Expect(errU).NotTo(HaveOccurred())
   134  			Expect(s).NotTo(BeNil())
   135  
   136  			if s != nil {
   137  				Expect(s.CompatibilityLevel).Should(Equal("FORWARD"))
   138  			}
   139  
   140  			s2, errG := client.KafkaSubjectSchemas.GetConfiguration(projectName, serviceName, subjectName)
   141  			Expect(errG).NotTo(HaveOccurred())
   142  			Expect(s2).NotTo(BeNil())
   143  
   144  			if s2 != nil {
   145  				Expect(s2.CompatibilityLevel).Should(Equal("FORWARD"))
   146  			}
   147  		})
   148  
   149  		It("delete Kafka Schema subject and Kafka service", func() {
   150  			if errD := client.KafkaSubjectSchemas.Delete(projectName, serviceName, subjectName); errD != nil {
   151  				Fail("cannot delete kafka schema subject:" + errD.Error())
   152  			}
   153  
   154  			if errD := client.Services.Delete(projectName, serviceName); errD != nil {
   155  				Fail("cannot delete service:" + errD.Error())
   156  			}
   157  		})
   158  	})
   159  })