github.com/Axway/agent-sdk@v1.1.101/pkg/apic/servicebuilder_test.go (about) 1 package apic 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 const longDescription = `This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about 10 Swagger at [http://swagger.io](http://swagger.io). In the third iteration of the pet store, we've switched to the design first approach! 11 You can now help us improve the API whether it's by making changes to the definition itself or to the code. 12 That way, with time, we can improve the API in general, and expose some of the new features in OAS3. 13 14 Some useful links: 15 - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore) 16 - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)` 17 18 func TestNewServiceBodyBuilder(t *testing.T) { 19 svcBody, err := NewServiceBodyBuilder().Build() 20 assert.NotNil(t, err) // service body does not build any spec for json or yaml, and no resource type 21 assert.NotNil(t, svcBody) 22 23 // test all the default values 24 assert.Equal(t, Passthrough, svcBody.AuthPolicy) 25 assert.Equal(t, PublishedState, svcBody.State) 26 assert.Equal(t, PublishedStatus, svcBody.Status) 27 } 28 29 func TestServiceBodySetters(t *testing.T) { 30 tags := map[string]interface{}{"tag1": "t1", "tag2": "t2"} 31 attribs := map[string]string{"attrib1": "a1", "attrib2": "a2"} 32 revAttr := map[string]string{"svc": "attr"} 33 instAttr := map[string]string{"inst": "attr"} 34 svcDetails := map[string]interface{}{"svc": "details"} 35 instDetails := map[string]interface{}{"inst": "details"} 36 revDetails := map[string]interface{}{"rev": "details"} 37 ep := []EndpointDefinition{ 38 { 39 Protocol: "https", 40 Host: "test.com", 41 Port: 443, 42 BasePath: "/test", 43 }, 44 } 45 46 serviceBuilder := NewServiceBodyBuilder() 47 serviceBuilder = serviceBuilder. 48 SetTitle("sbtitle"). 49 SetAPIName("testAPI"). 50 SetID("1234"). 51 SetPrimaryKey("PrimaryKey"). 52 SetRequestDefinitionsAllowed(true). 53 SetStage("stageID"). 54 SetStageDisplayName("teststage"). 55 SetURL("https://1234.execute-api.us-region.amazonaws.com/teststage"). 56 SetDescription(longDescription). 57 SetVersion("1.0.0"). 58 SetAuthPolicy("Oauth"). 59 SetAPISpec([]byte{}). 60 SetDocumentation([]byte("documentation")). 61 SetAPIUpdateSeverity("MAJOR"). 62 SetStatus(UnpublishedStatus). 63 SetState(PublishedStatus). 64 SetSubscriptionName("testsubscription"). 65 AddServiceEndpoint("https", "test.com", 443, "/test"). 66 SetImage("image"). 67 SetImageContentType("image/jpeg"). 68 SetResourceType("foobar"). 69 SetTags(tags). 70 SetServiceAttribute(attribs). 71 SetRevisionAttribute(revAttr). 72 SetInstanceAttribute(instAttr). 73 SetUnstructuredContentType("application/zip"). 74 SetUnstructuredFilename("test.zip"). 75 SetUnstructuredLabel("Label"). 76 SetUnstructuredType("Type"). 77 SetTeamName("00000"). 78 SetServiceAgentDetails(svcDetails). 79 SetInstanceAgentDetails(instDetails). 80 SetRevisionAgentDetails(revDetails). 81 SetReferenceServiceName("refSvc", "refEnv"). 82 SetReferenceInstanceName("refInstance", "refEnv"). 83 SetIgnoreSpecBasedCreds(true) 84 85 sb, err := serviceBuilder. 86 SetServiceEndpoints(ep). 87 Build() 88 89 assert.Nil(t, err) 90 assert.NotNil(t, sb) 91 assert.Equal(t, "sbtitle", sb.NameToPush) 92 assert.Equal(t, "testAPI", sb.APIName) 93 assert.Equal(t, "1234", sb.RestAPIID) 94 assert.Equal(t, "PrimaryKey", sb.PrimaryKey) 95 assert.Equal(t, "stageID", sb.Stage) 96 assert.Equal(t, "teststage", sb.StageDisplayName) 97 assert.Equal(t, "https://1234.execute-api.us-region.amazonaws.com/teststage", sb.URL) 98 assert.Equal(t, 350, len(sb.Description)) 99 100 description := longDescription[0:maxDescriptionLength-len(strEllipsis)] + strEllipsis 101 assert.Equal(t, description, sb.Description) 102 assert.Equal(t, "1.0.0", sb.Version) 103 assert.Equal(t, "Oauth", sb.AuthPolicy) 104 assert.Equal(t, UnpublishedStatus, sb.Status) 105 assert.Equal(t, PublishedStatus, sb.State) 106 107 assert.Equal(t, []byte{}, sb.SpecDefinition) 108 assert.Equal(t, []byte("documentation"), sb.Documentation) 109 110 assert.Equal(t, "image/jpeg", sb.ImageContentType) 111 assert.Equal(t, "image", sb.Image) 112 assert.Equal(t, Unstructured, sb.ResourceType) 113 114 assert.Equal(t, "MAJOR", sb.APIUpdateSeverity) 115 assert.Len(t, sb.Tags, 2) 116 assert.Equal(t, "t2", sb.Tags["tag2"]) 117 assert.Len(t, sb.ServiceAttributes, 2) 118 assert.Equal(t, "a2", sb.ServiceAttributes["attrib2"]) 119 assert.Equal(t, "application/zip", sb.UnstructuredProps.ContentType) 120 assert.Equal(t, "test.zip", sb.UnstructuredProps.Filename) 121 assert.Equal(t, "Label", sb.UnstructuredProps.Label) 122 assert.Equal(t, "Type", sb.UnstructuredProps.AssetType) 123 assert.Equal(t, "00000", sb.TeamName) 124 assert.Equal(t, ep, sb.Endpoints) 125 assert.Equal(t, revAttr, sb.RevisionAttributes) 126 assert.Equal(t, instAttr, sb.InstanceAttributes) 127 assert.Equal(t, svcDetails, sb.ServiceAgentDetails) 128 assert.Equal(t, instDetails, sb.InstanceAgentDetails) 129 assert.Equal(t, revDetails, sb.RevisionAgentDetails) 130 assert.Equal(t, Unidentified, sb.dataplaneType) 131 assert.Equal(t, false, sb.isDesignDataplane) 132 assert.Equal(t, "refEnv/refSvc", sb.GetReferencedServiceName()) 133 assert.Equal(t, "refEnv/refInstance", sb.GetReferenceInstanceName()) 134 assert.Equal(t, true, sb.ignoreSpecBasesCreds) 135 136 sb, err = serviceBuilder. 137 SetSourceDataplaneType(GitHub, true). 138 Build() 139 140 assert.Nil(t, err) 141 assert.NotNil(t, sb) 142 assert.Equal(t, GitHub, sb.dataplaneType) 143 assert.Equal(t, true, sb.isDesignDataplane) 144 145 // invalid service body path 146 ep[0].BasePath = "#/basepath" 147 sb, err = serviceBuilder. 148 SetServiceEndpoints(ep). 149 Build() 150 151 assert.NotNil(t, err) 152 assert.NotNil(t, sb) 153 154 // valid service body with empty path 155 ep[0].BasePath = "" 156 sb, err = serviceBuilder. 157 SetServiceEndpoints(ep). 158 Build() 159 160 assert.Nil(t, err) 161 assert.NotNil(t, sb) 162 } 163 164 func TestServiceBodyWithParseError(t *testing.T) { 165 serviceBuilder := NewServiceBodyBuilder() 166 _, err := serviceBuilder.SetResourceType(Oas3).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 167 assert.NotNil(t, err) 168 169 _, err = serviceBuilder.SetResourceType(Oas2).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 170 assert.NotNil(t, err) 171 172 _, err = serviceBuilder.SetResourceType(Wsdl).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 173 assert.NotNil(t, err) 174 175 _, err = serviceBuilder.SetResourceType(Protobuf).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 176 assert.NotNil(t, err) 177 178 _, err = serviceBuilder.SetResourceType(AsyncAPI).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 179 assert.NotNil(t, err) 180 181 _, err = serviceBuilder.SetResourceType(Unstructured).SetAPISpec([]byte("{\"test\":\"123\"}")).Build() 182 assert.Nil(t, err) 183 }