github.com/go-swagger/go-swagger@v0.31.0/codescan/operations_go119_test.go (about)

     1  package codescan
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/go-openapi/spec"
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestIndentedYAMLBlock(t *testing.T) {
    12  	sctx, err := newScanCtx(&Options{
    13  		Packages: []string{
    14  			"github.com/go-swagger/go-swagger/fixtures/goparsing/go119",
    15  		},
    16  	})
    17  	require.NoError(t, err)
    18  	var ops spec.Paths
    19  	for _, apiPath := range sctx.app.Operations {
    20  		prs := &operationsBuilder{
    21  			ctx:        sctx,
    22  			path:       apiPath,
    23  			operations: make(map[string]*spec.Operation),
    24  		}
    25  		require.NoError(t, prs.Build(&ops))
    26  	}
    27  
    28  	assert.Len(t, ops.Paths, 2)
    29  
    30  	po, ok := ops.Paths["/api/v1/somefunc"]
    31  	assert.True(t, ok)
    32  	assert.NotNil(t, po.Post)
    33  	op := po.Post
    34  	assert.Empty(t, op.Summary)
    35  	assert.Equal(t, "Do something", op.Description)
    36  	assert.Equal(t, "someFunc", op.ID)
    37  
    38  	assert.Contains(t, op.Extensions, "x-codeSamples")
    39  
    40  	samples := op.Extensions["x-codeSamples"].([]interface{})
    41  	assert.Len(t, samples, 1)
    42  	sample := samples[0].(map[string]interface{})
    43  	assert.Contains(t, sample, "lang")
    44  	assert.Equal(t, "curl", sample["lang"])
    45  
    46  	assert.Contains(t, sample, "source")
    47  	const expectedSource = `curl -u "${LOGIN}:${PASSWORD}" -d '{"key": "value"}' -X POST   "https://{host}/api/v1/somefunc"
    48  curl -u "${LOGIN}:${PASSWORD}" -d '{"key2": "value2"}' -X POST   "https://{host}/api/v1/somefunc"
    49  `
    50  	assert.Equal(t, expectedSource, sample["source"])
    51  
    52  	po2, ok := ops.Paths["/api/v1/somefuncTabs"]
    53  	assert.True(t, ok)
    54  	assert.NotNil(t, po2.Post)
    55  	op2 := po2.Post
    56  	assert.Empty(t, op2.Summary)
    57  	assert.Equal(t, "Do something", op2.Description)
    58  	assert.Equal(t, "someFuncTabs", op2.ID)
    59  
    60  	assert.Contains(t, op2.Extensions, "x-codeSamples")
    61  
    62  	samples2 := op2.Extensions["x-codeSamples"].([]interface{})
    63  	assert.Len(t, samples2, 1)
    64  	sample2 := samples2[0].(map[string]interface{})
    65  	assert.Contains(t, sample2, "lang")
    66  	assert.Equal(t, "curl", sample2["lang"])
    67  
    68  	assert.Contains(t, sample2, "source")
    69  	assert.Equal(t, expectedSource, sample2["source"])
    70  }