github.com/circl-dev/go-swagger@v0.31.0/cmd/swagger/commands/generate/spec_go111_test.go (about)

     1  // +build go1.11
     2  
     3  package generate
     4  
     5  import (
     6  	"encoding/json"
     7  	"io/ioutil"
     8  	"os"
     9  	"testing"
    10  
    11  	"github.com/circl-dev/go-swagger/codescan"
    12  
    13  	"github.com/jessevdk/go-flags"
    14  	"github.com/stretchr/testify/assert"
    15  	"gopkg.in/yaml.v2"
    16  )
    17  
    18  const (
    19  	basePath       = "../../../../fixtures/goparsing/spec"
    20  	jsonResultFile = basePath + "/api_spec_go111.json"
    21  	yamlResultFile = basePath + "/api_spec_go111.yml"
    22  )
    23  
    24  func TestSpecFileExecute(t *testing.T) {
    25  	files := []string{"", "spec.json", "spec.yml", "spec.yaml"}
    26  	for _, outputFile := range files {
    27  		spec := &SpecFile{
    28  			WorkDir: basePath,
    29  			Output:  flags.Filename(outputFile),
    30  		}
    31  
    32  		err := spec.Execute(nil)
    33  		assert.NoError(t, err)
    34  		if outputFile != "" {
    35  			_ = os.Remove(outputFile)
    36  		}
    37  	}
    38  }
    39  
    40  func TestGenerateJSONSpec(t *testing.T) {
    41  	opts := codescan.Options{
    42  		WorkDir:  basePath,
    43  		Packages: []string{"./..."},
    44  	}
    45  
    46  	swspec, err := codescan.Run(&opts)
    47  	assert.NoError(t, err)
    48  
    49  	data, err := marshalToJSONFormat(swspec, true)
    50  	assert.NoError(t, err)
    51  
    52  	expected, err := ioutil.ReadFile(jsonResultFile)
    53  	assert.NoError(t, err)
    54  
    55  	verifyJSONData(t, data, expected)
    56  }
    57  
    58  func TestGenerateYAMLSpec(t *testing.T) {
    59  	opts := codescan.Options{
    60  		WorkDir:  basePath,
    61  		Packages: []string{"./..."},
    62  	}
    63  
    64  	swspec, err := codescan.Run(&opts)
    65  	assert.NoError(t, err)
    66  
    67  	data, err := marshalToYAMLFormat(swspec)
    68  	assert.NoError(t, err)
    69  
    70  	expected, err := ioutil.ReadFile(yamlResultFile)
    71  	assert.NoError(t, err)
    72  
    73  	verifyYAMLData(t, data, expected)
    74  }
    75  
    76  func verifyJSONData(t *testing.T, data, expectedJSON []byte) {
    77  	var got interface{}
    78  	var expected interface{}
    79  
    80  	err := json.Unmarshal(data, &got)
    81  	assert.NoError(t, err)
    82  
    83  	err = json.Unmarshal(expectedJSON, &expected)
    84  	assert.NoError(t, err)
    85  	assert.Equal(t, expected, got)
    86  }
    87  
    88  func verifyYAMLData(t *testing.T, data, expectedYAML []byte) {
    89  	var got interface{}
    90  	var expected interface{}
    91  
    92  	err := yaml.Unmarshal(data, &got)
    93  	assert.NoError(t, err)
    94  
    95  	err = yaml.Unmarshal(expectedYAML, &expected)
    96  	assert.NoError(t, err)
    97  	assert.Equal(t, expected, got)
    98  }