mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-31 05:19:38 +08:00
160 lines
4.5 KiB
Go
160 lines
4.5 KiB
Go
package convert
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var (
|
|
collectionPath = "../../../examples/data/postman/postman_collection.json"
|
|
collectionProfileOverridePath = "../../../examples/data/postman/profile_override.yml"
|
|
collectionProfilePath = "../../../examples/data/postman/profile.yml"
|
|
)
|
|
|
|
var converterPostman = NewConverterPostman(NewTCaseConverter(collectionPath))
|
|
|
|
func TestPostman2JSON(t *testing.T) {
|
|
jsonPath, err := converterPostman.ToJSON()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.NotEmpty(t, jsonPath) {
|
|
t.Fatal()
|
|
}
|
|
}
|
|
|
|
func TestPostman2YAML(t *testing.T) {
|
|
yamlPath, err := converterPostman.ToYAML()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.NotEmpty(t, yamlPath) {
|
|
t.Fatal()
|
|
}
|
|
}
|
|
|
|
func TestLoadCollection(t *testing.T) {
|
|
casePostman, err := converterPostman.load()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal(err)
|
|
}
|
|
if !assert.Equal(t, "postman collection demo", casePostman.Info.Name) {
|
|
t.Fatal()
|
|
}
|
|
}
|
|
|
|
func TestMakeTestCaseFromCollection(t *testing.T) {
|
|
tCase, err := converterPostman.makeTestCase()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal()
|
|
}
|
|
// check name
|
|
if !assert.Equal(t, "postman collection demo", tCase.Config.Name) {
|
|
t.Fatal()
|
|
}
|
|
// check method
|
|
if !assert.EqualValues(t, "GET", tCase.TestSteps[0].Request.Method) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.EqualValues(t, "POST", tCase.TestSteps[1].Request.Method) {
|
|
t.Fatal()
|
|
}
|
|
// check url
|
|
if !assert.Equal(t, "https://postman-echo.com/get", tCase.TestSteps[0].Request.URL) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "https://postman-echo.com/post", tCase.TestSteps[1].Request.URL) {
|
|
t.Fatal()
|
|
}
|
|
// check params
|
|
if !assert.Equal(t, "v1", tCase.TestSteps[0].Request.Params["k1"]) {
|
|
t.Fatal()
|
|
}
|
|
// check cookies (pass, postman collection doesn't contains cookies)
|
|
// check headers
|
|
if !assert.Contains(t, tCase.TestSteps[1].Request.Headers["Content-Type"], "multipart/form-data") {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "application/x-www-form-urlencoded", tCase.TestSteps[2].Request.Headers["Content-Type"]) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "application/json", tCase.TestSteps[3].Request.Headers["Content-Type"]) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "text/plain", tCase.TestSteps[4].Request.Headers["Content-Type"]) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "HttpRunner", tCase.TestSteps[5].Request.Headers["User-Agent"]) {
|
|
t.Fatal()
|
|
}
|
|
// check body
|
|
if !assert.Equal(t, nil, tCase.TestSteps[0].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.NotEmpty(t, tCase.TestSteps[1].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, map[string]string{"k1": "v1", "k2": "v2"}, tCase.TestSteps[2].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, map[string]interface{}{"k1": "v1", "k2": "v2"}, tCase.TestSteps[3].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "have a nice day", tCase.TestSteps[4].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, nil, tCase.TestSteps[5].Request.Body) {
|
|
t.Fatal()
|
|
}
|
|
}
|
|
|
|
func TestMakeTestCaseWithProfileOverride(t *testing.T) {
|
|
tCaseConverter := NewTCaseConverter(collectionPath)
|
|
tCaseConverter.SetProfile(collectionProfileOverridePath)
|
|
c := NewConverterPostman(tCaseConverter)
|
|
tCase, err := c.makeTestCase()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal()
|
|
}
|
|
for _, step := range tCase.TestSteps {
|
|
if step.Request.Method == "GET" && !assert.Len(t, step.Request.Headers, 1) {
|
|
t.Fatal()
|
|
}
|
|
if step.Request.Method == "POST" && !assert.Len(t, step.Request.Headers, 2) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "all original headers will be overridden", step.Request.Headers["Header1"]) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Len(t, step.Request.Cookies, 1) {
|
|
t.Fatal()
|
|
}
|
|
if !assert.Equal(t, "all original cookies will be overridden", step.Request.Cookies["Cookie1"]) {
|
|
t.Fatal()
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMakeTestCaseWithProfile(t *testing.T) {
|
|
tCaseConverter := NewTCaseConverter(collectionPath)
|
|
tCaseConverter.SetProfile(collectionProfilePath)
|
|
c := NewConverterPostman(tCaseConverter)
|
|
tCase, err := c.makeTestCase()
|
|
if !assert.NoError(t, err) {
|
|
t.Fatal()
|
|
}
|
|
// create cookies Cookie1 indicated in profile
|
|
if !assert.Equal(t, "this cookie will be created or updated", tCase.TestSteps[0].Request.Cookies["Cookie1"]) {
|
|
t.Fatal()
|
|
}
|
|
// update header User-Agent indicated in profile
|
|
if !assert.Equal(t, "this header will be created or updated", tCase.TestSteps[5].Request.Headers["User-Agent"]) {
|
|
t.Fatal()
|
|
}
|
|
// pass header Connection which is not indicated in profile
|
|
if !assert.Equal(t, "close", tCase.TestSteps[5].Request.Headers["Connection"]) {
|
|
t.Fatal()
|
|
}
|
|
}
|