Skip to content

Commit 450f7de

Browse files
test: added tests for remaining languages using openapi
1 parent 6bfda85 commit 450f7de

File tree

3 files changed

+51
-21
lines changed

3 files changed

+51
-21
lines changed

core/internal/languages/openapi-generator-runner.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ func runOpenAPIGenerator(args ...string) error {
1616
log.Debugf("err : %s", err)
1717
return errors.New("'openapi-generator-cli' command doesn't exist")
1818
}
19-
log.Debugf("openapi-generator-cli is available at %s", path)
19+
log.Debugf("'openapi-generator-cli' is available at %s", path)
20+
err = os.Setenv("OPENAPI_GENERATOR_VERSION", "6.6.0")
21+
if err != nil {
22+
log.Debugf("err : %s", err)
23+
return err
24+
}
2025
output, err := exec.Command(path, args...).Output()
2126
if err != nil {
2227
log.Debugf("Output : %s", string(output))

core/internal/languages/utils/common.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ func GetProtoBufDataType(value string) string {
5454
return "double"
5555
} else if value == "[]byte" {
5656
return "bytes"
57-
} else if value == "string" {
58-
return "string"
5957
}
6058
return value
6159
}

core/test/generator_test.go

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"github.com/intelops/compage/core/internal/converter/grpc"
66
"github.com/intelops/compage/core/internal/handlers"
77
"os"
8+
"strings"
89
"testing"
910
)
1011

@@ -557,7 +558,7 @@ func TestRestServerWithOpenApiGenerator(t *testing.T) {
557558
"consumerData": {
558559
"nodeType": "node-type-circle",
559560
"name": "sample-service",
560-
"language": "go",
561+
"language": "$$LANGUAGE$$",
561562
"restConfig": {
562563
"server": {
563564
"sqlDb": "",
@@ -566,30 +567,56 @@ func TestRestServerWithOpenApiGenerator(t *testing.T) {
566567
"openApiFileYamlContent": "swagger: \"2.0\"\ninfo:\n version: 1.0.0\n title: Swagger Petstore\n license:\n name: MIT\nhost: petstore.swagger.io\nbasePath: /v1\nschemes:\n - http\nconsumes:\n - application/json\nproduces:\n - application/json\npaths:\n /pets:\n get:\n summary: List all pets\n operationId: listPets\n tags:\n - pets\n parameters:\n - name: limit\n in: query\n description: How many items to return at one time (max 100)\n required: false\n type: integer\n format: int32\n responses:\n \"200\":\n description: A paged array of pets\n headers:\n x-next:\n type: string\n description: A link to the next page of responses\n schema:\n $ref: '#/definitions/Pets'\n default:\n description: unexpected error\n schema:\n $ref: '#/definitions/Error'\n post:\n summary: Create a pet\n operationId: createPets\n tags:\n - pets\n responses:\n \"201\":\n description: Null response\n default:\n description: unexpected error\n schema:\n $ref: '#/definitions/Error'\n /pets/{petId}:\n get:\n summary: Info for a specific pet\n operationId: showPetById\n tags:\n - pets\n parameters:\n - name: petId\n in: path\n required: true\n description: The id of the pet to retrieve\n type: string\n responses:\n \"200\":\n description: Expected response to a valid request\n schema:\n $ref: '#/definitions/Pets'\n default:\n description: unexpected error\n schema:\n $ref: '#/definitions/Error'\ndefinitions:\n Pet:\n type: \"object\"\n required:\n - id\n - name\n properties:\n id:\n type: integer\n format: int64\n name:\n type: string\n tag:\n type: string\n Pets:\n type: array\n items:\n $ref: '#/definitions/Pet'\n Error:\n type: \"object\"\n required:\n - code\n - message\n properties:\n code:\n type: integer\n format: int32\n message:\n type: string\n"
567568
},
568569
"template": "openAPI",
569-
"framework": "go-gin-server"
570+
"framework": "$$FRAMEWORK$$"
570571
}
571572
}
572573
}
573574
}
574575
}`
575-
input := project.GenerateCodeRequest{
576-
UserName: "mahendraintelops",
577-
RepositoryName: "first-project-github",
578-
ProjectName: "first-rest-server-with-openapi-project",
579-
Json: restServerWithOpenAPIConfigJSON,
576+
var tests = []struct {
577+
language string
578+
framework string
579+
want error
580+
}{
581+
{"java", "java-micronaut-server", nil},
582+
{"java", "java-undertow-server", nil},
583+
{"java", "spring", nil},
584+
{"python", "python-flask", nil},
585+
{"ruby", "ruby-on-rails", nil},
586+
{"ruby", "ruby-sinatra", nil},
587+
{"go", "go-gin-server", nil},
588+
{"go", "go-server", nil},
589+
{"go", "go-echo-server", nil},
590+
{"javascript", "nodejs-express-server", nil},
591+
{"rust", "rust-server", nil},
580592
}
581-
defer func() {
582-
_ = os.RemoveAll("/tmp/first-rest-server-with-openapi-project")
583-
}()
584593

585-
// retrieve project struct
586-
getProject, err := grpc.GetProject(&input)
587-
if err != nil {
588-
t.Errorf("grpc.GetProject conversion failed = %v", getProject)
589-
}
590-
// trigger project generation
591-
if err0 := handlers.Handle(getProject); err0 != nil {
592-
t.Errorf("handlers.Handle failed %s", err0.Error())
594+
for _, tt := range tests {
595+
t.Run(tt.language, func(t *testing.T) {
596+
replacedConfig := strings.Replace(restServerWithOpenAPIConfigJSON, "$$LANGUAGE$$", tt.language, 1)
597+
replacedConfig = strings.Replace(replacedConfig, "$$FRAMEWORK$$", tt.framework, 1)
598+
input := project.GenerateCodeRequest{
599+
UserName: "mahendraintelops",
600+
RepositoryName: "first-project-github",
601+
ProjectName: "first-openapi-based-project-" + tt.language,
602+
Json: replacedConfig,
603+
}
604+
defer func() {
605+
_ = os.RemoveAll("/tmp/first-openapi-based-project-" + tt.language)
606+
}()
607+
608+
// retrieve project struct
609+
getProject, err := grpc.GetProject(&input)
610+
if err != nil {
611+
t.Errorf("grpc.GetProject conversion failed = %v", getProject)
612+
}
613+
614+
// trigger project generation
615+
ans := handlers.Handle(getProject)
616+
if ans != tt.want {
617+
t.Errorf("got %v, want %v", ans, tt.want)
618+
}
619+
})
593620
}
594621
}
595622

0 commit comments

Comments
 (0)