Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tests for template #169

Merged
merged 3 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion system_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,7 @@ func TestFindSystem(t *testing.T) {
}
}

func TestGetStatistics(t *testing.T) {
func TestSystemGetStatistics(t *testing.T) {
// Define test cases
testCases := map[string]struct {
system *System
Expand Down
286 changes: 211 additions & 75 deletions template_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
package goscaleio

import (
"fmt"
"io/ioutil"
"net/http"
"net/http/httptest"
Expand All @@ -23,100 +24,235 @@ import (
)

func TestGetTemplateByID(t *testing.T) {
responseJSONFile := "response/template_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
tests := map[string]struct {
id string
server *httptest.Server
version string
expected error
}{
"success version 4.0": {
id: "12345",
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/template_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template/") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "4.0",
expected: nil,
},
"success version < 4.0": {
id: "12345",
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/template_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template/") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "3.0",
expected: nil,
},
"error due to template not found": {
id: "12345",
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
http.NotFound(w, r)
})),
expected: fmt.Errorf("Template not found"),
},
}

server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.Contains(r.URL.Path, "/Api/V1/template/") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
for name, tc := range tests {
t.Run(name, func(t *testing.T) {
defer tc.server.Close()
gc := &GatewayClient{
http: &http.Client{},
host: tc.server.URL,
username: "test_username",
password: "test_password",
version: tc.version,
}
}
http.NotFound(w, r)
}))
defer server.Close()
gc := &GatewayClient{
http: &http.Client{},
host: server.URL,
username: "test_username",
password: "test_password",
}

templateID := "12345"

templateResponse, err := gc.GetTemplateByID(templateID)
template, err := gc.GetTemplateByID(tc.id)

assert.NotNil(t, templateResponse, "Expected non-nil response")
assert.EqualValues(t, templateResponse.ID, "12345")
if tc.expected == nil {
assert.Nil(t, err)
assert.NotNil(t, template)
} else {
assert.NotNil(t, err)
assert.Equal(t, tc.expected.Error(), err.Error())
}
})
}
}

func TestGetTemplateByFilters(t *testing.T) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
tests := map[string]struct {
server *httptest.Server
version string
expected error
}{
"success with version 4.0": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "4.0",
expected: nil,
},
"success with version 3.0": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "3.0",
expected: nil,
},
"error due to parsing response": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("invalid json"))
})),
expected: fmt.Errorf("Error While Parsing Response Data For Template: invalid character 'i' looking for beginning of value"),
},
}

server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
for _, tc := range tests {
t.Run("", func(t *testing.T) {
defer tc.server.Close()
gc := &GatewayClient{
http: &http.Client{},
host: tc.server.URL,
username: "test_username",
password: "test_password",
version: tc.version,
}
}
http.NotFound(w, r)
}))
defer server.Close()

gc := &GatewayClient{
http: &http.Client{},
host: server.URL,
username: "test_username",
password: "test_password",
}

filter := "name"
value := "Test"
template, err := gc.GetTemplateByFilters("name", "template1")

templateResponse, err := gc.GetTemplateByFilters(filter, value)
assert.NotNil(t, templateResponse, "Expected non-nil response")
assert.EqualValues(t, templateResponse[0].ID, "12345")
if tc.expected == nil {
assert.Nil(t, err)
assert.NotNil(t, template)
} else {
assert.NotNil(t, err)
assert.Equal(t, tc.expected.Error(), err.Error())
}
})
}
}

func TestGetAllTemplates(t *testing.T) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
tests := map[string]struct {
server *httptest.Server
version string
expected error
}{
"success with version 4.0": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "4.0",
expected: nil,
},
"success with version 3.0": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
responseJSONFile := "response/templates_response.json"
responseData, err := ioutil.ReadFile(responseJSONFile)
if err != nil {
t.Fatalf("Failed to read response JSON file: %v", err)
}
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
}
}
http.NotFound(w, r)
})),
version: "3.0",
expected: nil,
},
"error due to parsing response": {
server: httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("invalid json"))
})),
expected: fmt.Errorf("Error While Parsing Response Data For Template: invalid character 'i' looking for beginning of value"),
},
}

server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.Contains(r.URL.Path, "/Api/V1/template") {
if r.Method == http.MethodGet {
w.WriteHeader(http.StatusOK)
w.Write(responseData)
return
for _, tc := range tests {
t.Run("", func(t *testing.T) {
defer tc.server.Close()
gc := &GatewayClient{
http: &http.Client{},
host: tc.server.URL,
username: "test_username",
password: "test_password",
version: tc.version,
}
}
http.NotFound(w, r)
}))
defer server.Close()

gc := &GatewayClient{
http: &http.Client{},
host: server.URL,
username: "test_username",
password: "test_password",
}

templateResponse, err := gc.GetAllTemplates()
template, err := gc.GetAllTemplates()

assert.NotNil(t, templateResponse, "Expected non-nil response")
assert.EqualValues(t, templateResponse[0].ID, "12345")
if tc.expected == nil {
assert.Nil(t, err)
assert.NotNil(t, template)
} else {
assert.NotNil(t, err)
assert.Equal(t, tc.expected.Error(), err.Error())
}
})
}
}
Loading