github.com/kovansky/hugo@v0.92.3-0.20220224232819-63076e4ff19f/tpl/openapi/openapi3/integration_test.go (about)

     1  // Copyright 2021 The Hugo Authors. All rights reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software
     9  // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  
    14  package openapi3_test
    15  
    16  import (
    17  	"strings"
    18  	"testing"
    19  
    20  	"github.com/gohugoio/hugo/hugolib"
    21  )
    22  
    23  func TestUnmarshal(t *testing.T) {
    24  	t.Parallel()
    25  
    26  	files := `
    27  -- assets/api/myapi.yaml --
    28  openapi: 3.0.0
    29  info:
    30    title: Sample API
    31    description: Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.
    32    version: 0.1.9
    33  servers:
    34    - url: http://api.example.com/v1
    35      description: Optional server description, e.g. Main (production) server
    36    - url: http://staging-api.example.com
    37      description: Optional server description, e.g. Internal staging server for testing
    38  paths:
    39    /users:
    40      get:
    41        summary: Returns a list of users.
    42        description: Optional extended description in CommonMark or HTML.
    43        responses:
    44          '200':    # status code
    45            description: A JSON array of user names
    46            content:
    47              application/json:
    48                schema: 
    49                  type: array
    50                  items: 
    51                    type: string
    52  -- config.toml --
    53  baseURL = 'http://example.com/'
    54  -- layouts/index.html --
    55  {{ $api := resources.Get "api/myapi.yaml" | openapi3.Unmarshal }}
    56  API: {{ $api.Info.Title | safeHTML }}
    57    `
    58  
    59  	b := hugolib.NewIntegrationTestBuilder(
    60  		hugolib.IntegrationTestConfig{
    61  			T:           t,
    62  			Running:     true,
    63  			TxtarString: files,
    64  		},
    65  	).Build()
    66  
    67  	b.AssertFileContent("public/index.html", `API: Sample API`)
    68  
    69  	b.
    70  		EditFileReplace("assets/api/myapi.yaml", func(s string) string { return strings.ReplaceAll(s, "Sample API", "Hugo API") }).
    71  		Build()
    72  
    73  	b.AssertFileContent("public/index.html", `API: Hugo API`)
    74  }