internal/openapi/loader/processingLoader_test.go   A
last analyzed

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 45
dl 0
loc 59
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A loader.TestProcessingLoader_LoadFromURI_ServerUrlHasSchemeAndHost_OnlyPathInServerUrl 0 41 2
A loader.givenServers 0 7 1
1
package loader
2
3
import (
4
	"testing"
5
6
	"github.com/getkin/kin-openapi/openapi3"
7
	"github.com/stretchr/testify/assert"
8
)
9
10
func TestProcessingLoader_LoadFromURI_ServerUrlHasSchemeAndHost_OnlyPathInServerUrl(t *testing.T) {
11
	const uri = "uri"
12
	loaderMock := &MockSpecificationLoader{}
13
	loader := &processingLoader{loader: loaderMock}
14
	originalSwagger := &openapi3.T{
15
		Servers: *givenServers(),
16
		Paths: map[string]*openapi3.PathItem{
17
			"path": {
18
				Servers: *givenServers(),
19
				Connect: &openapi3.Operation{Servers: givenServers()},
20
				Delete:  &openapi3.Operation{Servers: givenServers()},
21
				Get:     &openapi3.Operation{Servers: givenServers()},
22
				Head:    &openapi3.Operation{Servers: givenServers()},
23
				Options: &openapi3.Operation{Servers: givenServers()},
24
				Patch:   &openapi3.Operation{Servers: givenServers()},
25
				Post:    &openapi3.Operation{Servers: givenServers()},
26
				Put:     &openapi3.Operation{Servers: givenServers()},
27
				Trace:   &openapi3.Operation{Servers: givenServers()},
28
			},
29
		},
30
	}
31
	loaderMock.On("LoadFromURI", uri).Return(originalSwagger, nil).Once()
32
33
	swagger, err := loader.LoadFromURI(uri)
34
35
	loaderMock.AssertExpectations(t)
36
	assert.NoError(t, err)
37
	if assert.Len(t, swagger.Servers, 2) {
38
		assert.Equal(t, "/path", swagger.Servers[0].URL)
39
		assert.Equal(t, "/", swagger.Servers[1].URL)
40
	}
41
	assert.Equal(t, "/path", swagger.Paths["path"].Servers[0].URL)
42
	assert.Equal(t, "/path", (*swagger.Paths["path"].Connect.Servers)[0].URL)
43
	assert.Equal(t, "/path", (*swagger.Paths["path"].Delete.Servers)[0].URL)
44
	assert.Equal(t, "/path", (*swagger.Paths["path"].Get.Servers)[0].URL)
45
	assert.Equal(t, "/path", (*swagger.Paths["path"].Head.Servers)[0].URL)
46
	assert.Equal(t, "/path", (*swagger.Paths["path"].Options.Servers)[0].URL)
47
	assert.Equal(t, "/path", (*swagger.Paths["path"].Patch.Servers)[0].URL)
48
	assert.Equal(t, "/path", (*swagger.Paths["path"].Post.Servers)[0].URL)
49
	assert.Equal(t, "/path", (*swagger.Paths["path"].Put.Servers)[0].URL)
50
	assert.Equal(t, "/path", (*swagger.Paths["path"].Trace.Servers)[0].URL)
51
}
52
53
func givenServers() *openapi3.Servers {
54
	return &openapi3.Servers{
55
		{
56
			URL: "https://localhost:1345/path?param=value",
57
		},
58
		{
59
			URL: "https://localhost:1345",
60
		},
61
	}
62
}
63