mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-18 03:42:28 +01:00
1080 lines
45 KiB
ObjectPascal
1080 lines
45 KiB
ObjectPascal
unit utOpenApiReader;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fpcunit, fpjson, testregistry, fpopenapi.objects, fpopenapi.reader;
|
|
|
|
Type
|
|
|
|
{ TTestOpenApiReader }
|
|
|
|
TTestOpenApiReader = class(TTestCase)
|
|
private
|
|
FOpenAPI: TOpenAPi;
|
|
FReader: TOpenAPIReader;
|
|
Public
|
|
Procedure Setup; override;
|
|
Procedure TearDown; override;
|
|
procedure LoadJSON(aJSON: TJSONStringType);
|
|
procedure LoadJSONFile(aJSONFileName: TJSONStringType);
|
|
Procedure TestRead(const aJSON : String);
|
|
Property Reader : TOpenAPIReader Read FReader;
|
|
Property OpenAPI : TOpenAPi Read FOpenAPI;
|
|
Published
|
|
Procedure TestHookup;
|
|
end;
|
|
|
|
TTestOpenApiReaderLarge = class (TTestOpenApiReader)
|
|
Published
|
|
procedure TestTitle;
|
|
Procedure TestLarge;
|
|
end;
|
|
|
|
// TTestOpenAPIReader =
|
|
|
|
TTestOpenApiReaderOpenAPI = Class(TTestOpenAPIReader)
|
|
Procedure TestOpenAPI;
|
|
Procedure TestJSONSchemaDialect;
|
|
end;
|
|
|
|
TTestOpenApiReaderInfo = Class(TTestOpenAPIReader)
|
|
Procedure TestVersion;
|
|
Procedure TestTitle;
|
|
Procedure TestSummary;
|
|
Procedure TestDescription;
|
|
Procedure TestTermsOfService;
|
|
Procedure TestContactEmail;
|
|
Procedure TestContactName;
|
|
Procedure TestContactURL;
|
|
Procedure TestLicenseUrl;
|
|
Procedure TestLicenseIdentifier;
|
|
Procedure TestLicenseName;
|
|
end;
|
|
|
|
TTestOpenApiReaderTags = Class(TTestOpenAPIReader)
|
|
Procedure TestName;
|
|
Procedure TestDescription;
|
|
Procedure TestExternalDocs;
|
|
Procedure Test2Tags;
|
|
end;
|
|
|
|
TTestOpenApiReaderExternalDocs = Class(TTestOpenAPIReader)
|
|
Procedure TestUrl;
|
|
Procedure TestDescription;
|
|
end;
|
|
|
|
TTestOpenApiReaderServers = Class(TTestOpenAPIReader)
|
|
Procedure TestUrl;
|
|
Procedure TestDescription;
|
|
Procedure TestVariablesDefault;
|
|
Procedure TestVariablesDescription;
|
|
Procedure TestVariablesEnum;
|
|
Procedure Test2Url;
|
|
end;
|
|
|
|
TTestOpenApiReaderPaths = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestRef;
|
|
Procedure TestSummary;
|
|
Procedure TestDescription;
|
|
Procedure TestGetEmpty;
|
|
Procedure TestGetSummary;
|
|
Procedure TestGetDescription;
|
|
Procedure TestGetOperationId;
|
|
Procedure TestGetDeprecated;
|
|
Procedure TestGetExternalDocsEmpty;
|
|
Procedure TestGetExternalDocsURL;
|
|
Procedure TestGetServers;
|
|
end;
|
|
|
|
TTestOpenApiReaderPathRequestBody = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestDescription;
|
|
Procedure TestRequired;
|
|
Procedure TestContent;
|
|
Procedure TestContentSchema;
|
|
Procedure TestContentExample;
|
|
Procedure TestContentExamples;
|
|
Procedure TestContentEncodingContentType;
|
|
Procedure TestContentEncodingExplode;
|
|
Procedure TestContentEncodingStyle;
|
|
Procedure TestContentEncodingAllowReserved;
|
|
Procedure TestContentEncodingHeaders;
|
|
end;
|
|
|
|
TTestOpenApiReaderPathParameters = Class(TTestOpenAPIReader)
|
|
Procedure TestGetParametersEmpty;
|
|
end;
|
|
|
|
TTestOpenApiReaderPathResponses = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestHeaders;
|
|
Procedure TestDescription;
|
|
Procedure TestContentEmpty;
|
|
Procedure TestContentSchema;
|
|
Procedure TestContentExample;
|
|
Procedure TestContentExamples;
|
|
Procedure TestContentEncodingEmpty;
|
|
Procedure TestContentEncodingContentType;
|
|
end;
|
|
|
|
TTestOpenApiReaderPathSecurity = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestAPIKey;
|
|
end;
|
|
|
|
TTestOpenApiReaderPathResponsesLinks = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestOperatonRef;
|
|
Procedure TestOperatonId;
|
|
Procedure TestParameters;
|
|
Procedure TestRequestBody;
|
|
Procedure TestDescription;
|
|
Procedure TestServer;
|
|
end;
|
|
|
|
TTestOpenApiReaderWebHooks = Class(TTestOpenAPIReader)
|
|
Procedure TestEmpty;
|
|
Procedure TestSummary;
|
|
end;
|
|
|
|
TTestOpenApiReaderComponents = Class(TTestOpenAPIReader)
|
|
Procedure TestSchemaEmpty;
|
|
Procedure TestSchemaContentEncoding;
|
|
end;
|
|
|
|
TTestOpenApiReaderSecurity = Class(TTestOpenAPIReader)
|
|
Procedure TestOne;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TTestOpenApiReader }
|
|
|
|
procedure TTestOpenApiReader.Setup;
|
|
begin
|
|
Inherited;
|
|
FReader:=TOpenAPIReader.Create(Nil);
|
|
end;
|
|
|
|
procedure TTestOpenApiReader.TearDown;
|
|
begin
|
|
FreeAndNil(FOpenAPI);
|
|
FreeAndNil(FReader);
|
|
Inherited;
|
|
end;
|
|
|
|
procedure TTestOpenApiReader.LoadJSON(aJSON: TJSONStringType);
|
|
begin
|
|
FreeAndNil(FOpenAPI);
|
|
FOpenAPI:=TOpenAPI.Create;
|
|
Reader.ReadFromString(OpenAPI,aJSON);
|
|
end;
|
|
|
|
procedure TTestOpenApiReader.LoadJSONFile(aJSONFileName: TJSONStringType);
|
|
|
|
var
|
|
F : TFileStream;
|
|
aJSON : TJSONStringType;
|
|
|
|
begin
|
|
aJSON:='';
|
|
F:=TFileStream.Create(aJSONFileName,fmOpenRead or fmShareDenyWrite);
|
|
try
|
|
SetLength(aJSON,F.Size);
|
|
F.ReadBuffer(aJSON[1],Length(aJSON));
|
|
LoadJSON(aJSON);
|
|
finally
|
|
F.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TTestOpenApiReader.TestRead(const aJSON: String);
|
|
begin
|
|
LoadJSON(aJSON);
|
|
end;
|
|
|
|
procedure TTestOpenApiReader.TestHookup;
|
|
begin
|
|
AssertNotNull('Have reader',FReader);
|
|
end;
|
|
|
|
procedure TTestOpenApiReaderLarge.TestTitle;
|
|
|
|
const
|
|
JSON =
|
|
' {' + sLineBreak+
|
|
' "openapi": "3.0.0",' + sLineBreak+
|
|
' "info": {' + sLineBreak+
|
|
' "version": "1.0.0",' + sLineBreak+
|
|
' "title": "Sample API",' + sLineBreak+
|
|
' "description": "A sample API to illustrate OpenAPI concepts"' + sLineBreak+
|
|
' }' + sLineBreak+
|
|
' }';
|
|
|
|
begin
|
|
LoadJSON(JSON);
|
|
AssertEquals('OpenApi','3.0.0',OpenAPI.OpenApi);
|
|
AssertEquals('OpenAPI.Info.Version','1.0.0',OpenAPI.Info.Version);
|
|
AssertEquals('OpenAPI.Info.title','Sample API',OpenAPI.Info.Title);
|
|
AssertEquals('OpenAPI.Info.description','A sample API to illustrate OpenAPI concepts',OpenAPI.Info.Description);
|
|
end;
|
|
|
|
procedure TTestOpenApiReaderLarge.TestLarge;
|
|
begin
|
|
LoadJSONFile('openapi-all.json');
|
|
end;
|
|
|
|
procedure TTestOpenApiReaderOpenAPI.TestOpenAPI;
|
|
|
|
begin
|
|
TestRead('{ "openapi" : "123" }');
|
|
AssertEquals('OpenAPI.openapi','123',OpenAPI.openapi);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderOpenAPI.TestJSONSchemaDialect;
|
|
|
|
begin
|
|
TestRead('{ "jsonSchemaDialect" : "123" }');
|
|
AssertEquals('OpenAPI.jsonSchemaDialect','123',OpenAPI.jsonSchemaDialect);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestVersion;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "version" : "123" } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertEquals('OpenAPI.info.version','123',OpenAPI.info.version);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestTitle;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "title" : "123" } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertEquals('OpenAPI.info.title','123',OpenAPI.info.title);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestSummary;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "summary" : "123" } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertEquals('OpenAPI.info.summary','123',OpenAPI.info.summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "description" : "123" } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertEquals('OpenAPI.info.description','123',OpenAPI.info.description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestTermsOfService;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "termsOfService" : "123" } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertEquals('OpenAPI.info.termsOfService','123',OpenAPI.info.termsOfService);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestContactEmail;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "contact" : { "email" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.contact',OpenAPI.info.contact);
|
|
AssertEquals('OpenAPI.info.contact.email','123',OpenAPI.info.contact.email);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestContactName;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "contact" : { "name" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.contact',OpenAPI.info.contact);
|
|
AssertEquals('OpenAPI.info.contact.name','123',OpenAPI.info.contact.name);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestContactURL;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "contact" : { "url" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.contact',OpenAPI.info.contact);
|
|
AssertEquals('OpenAPI.info.contact.url','123',OpenAPI.info.contact.url);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestLicenseUrl;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "license" : { "url" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.license',OpenAPI.info.license);
|
|
AssertEquals('OpenAPI.info.license.url','123',OpenAPI.info.license.url);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestLicenseIdentifier;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "license" : { "identifier" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.license',OpenAPI.info.license);
|
|
AssertEquals('OpenAPI.info.license.identifier','123',OpenAPI.info.license.identifier);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderInfo.TestLicenseName;
|
|
|
|
begin
|
|
TestRead('{ "info" : { "license" : { "name" : "123" } } }');
|
|
AssertNotNull('OpenAPI.info',OpenAPI.info);
|
|
AssertNotNull('OpenAPI.info.license',OpenAPI.info.license);
|
|
AssertEquals('OpenAPI.info.license.name','123',OpenAPI.info.license.name);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderTags.TestName;
|
|
|
|
begin
|
|
TestRead('{ "tags" : [ { "name" : "123" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderTags.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "tags" : [ { "description" : "123" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderTags.TestExternalDocs;
|
|
|
|
begin
|
|
TestRead('{ "tags" : [ { "externalDocs" : { "url" :"123" } } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderTags.Test2Tags;
|
|
|
|
begin
|
|
TestRead('{ "tags" : [ { "name" : "123" }, { "name" : "456" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderExternalDocs.TestUrl;
|
|
|
|
begin
|
|
TestRead('{ "externalDocs" : { "url" :"123" } }');
|
|
AssertNotNull('OpenAPI.externalDocs',OpenAPI.externalDocs);
|
|
AssertEquals('OpenAPI.externalDocs.url','123',OpenAPI.externalDocs.url);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderExternalDocs.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "externalDocs" : { "description" :"123" } }');
|
|
AssertNotNull('OpenAPI.externalDocs',OpenAPI.externalDocs);
|
|
AssertEquals('OpenAPI.externalDocs.description','123',OpenAPI.externalDocs.description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.TestUrl;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "url" :"123" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "description" :"123" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.TestVariablesDefault;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "variables" : { "user": { "default": "123" } } } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.TestVariablesDescription;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "variables" : { "user": { "description": "123" } } } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.TestVariablesEnum;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "variables" : { "user": { "enum": [ "123", "456" ] } } } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderServers.Test2Url;
|
|
|
|
begin
|
|
TestRead('{ "servers" : [ { "url" :"123" }, { "url" :"456" } ] }');
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : {} } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.paths['api']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestRef;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "$ref": "abc"} } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.paths['api']);
|
|
AssertEquals('OpenAPI.paths.api.$ref','abc',OpenAPI.Paths['api'].ref);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestSummary;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "summary": "abc"} } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertEquals('OpenAPI.paths.api.summary','abc',OpenAPI.Paths['api'].summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "description": "abc"} } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertEquals('OpenAPI.paths.api.description','abc',OpenAPI.Paths['api'].description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetSummary;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "summary" : "123" } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertEquals('OpenAPI.paths.api.get.summary','123',OpenAPI.Paths['api'].get.summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetDescription;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "description" : "123" } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertEquals('OpenAPI.paths.api.get.description','123',OpenAPI.Paths['api'].get.description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetOperationId;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "operationId" : "123" } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertEquals('OpenAPI.paths.api.get.operationId','123',OpenAPI.Paths['api'].get.operationId);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetDeprecated;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "deprecated" : true } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertEquals('OpenAPI.paths.api.get.deprecated',True,OpenAPI.Paths['api'].get.deprecated);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetExternalDocsEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "externalDocs" : { } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.externalDocs',OpenAPI.Paths['api'].get.externalDocs);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetExternalDocsURL;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "externalDocs" : { "url" : "123" } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.externalDocs',OpenAPI.Paths['api'].get.externalDocs);
|
|
AssertEquals('OpenAPI.paths.api.get.externalDocs.url','123',OpenAPI.Paths['api'].get.externalDocs.url);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPaths.TestGetServers;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "servers": [ {} ] } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.servers[0]',OpenAPI.Paths['api'].servers[0]);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "description" : "123" } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.description','123',OpenAPI.Paths['api'].get.requestBody.description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestRequired;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "required" : true} } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.required',True,OpenAPI.Paths['api'].get.requestBody.required);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContent;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentSchema;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "schema" : true } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.schema',OpenAPI.Paths['api'].get.requestBody.content['123'].schema);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentExample;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "example" : { } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.example',OpenAPI.Paths['api'].get.requestBody.content['123'].example);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentExamples;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "examples" : { "abc" : { "summary": "x"} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.examples',OpenAPI.Paths['api'].get.requestBody.content['123'].examples);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.examples.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].examples['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.examples.abc.summary','x',OpenAPI.Paths['api'].get.requestBody.content['123'].examples['abc'].summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentEncodingContentType;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "encoding" : { "abc" : { "contentType": "def"} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.[123]',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.contentType','def',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].contentType);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentEncodingExplode;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "encoding" : { "abc" : { "explode": true} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.explode',True,OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].explode);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentEncodingStyle;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "encoding" : { "abc" : { "style": "def"} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.style','def',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].style);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentEncodingAllowReserved;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "encoding" : { "abc" : { "allowReserved": true} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.allowReserved',True,OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].allowReserved);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathRequestBody.TestContentEncodingHeaders;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get": { "requestBody" : { "content" : { "123" : { "encoding" : { "abc" : { "headers": { "def" : { "explode" : true } } } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody',OpenAPI.Paths['api'].get.requestBody);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content',OpenAPI.Paths['api'].get.requestBody.content);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123',OpenAPI.Paths['api'].get.requestBody.content['123']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc']);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.headers',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].headers);
|
|
AssertNotNull('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.headers.def',OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].headers['def']);
|
|
AssertEquals('OpenAPI.paths.api.get.requestBody.content.123.encoding.abc.headers.def.explode',True,OpenAPI.Paths['api'].get.requestBody.content['123'].encoding['abc'].headers['def'].explode);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathParameters.TestGetParametersEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "parameters": [ {} ] } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.parameters[0]',OpenAPI.Paths['api'].parameters[0]);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : {} } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestHeaders;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "headers" : { "x-content" : { } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default]',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.headers',OpenAPI.Paths['api'].get.responses['default'].headers);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.headers.x-content',OpenAPI.Paths['api'].get.responses['default'].headers['x-content']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "description" : "abc" } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.description','abc',OpenAPI.Paths['api'].get.responses['default'].description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentSchema;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { "schema" : true } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.schema',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].schema);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentExample;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { "example" : {} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.example',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].example);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentExamples;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { "examples" : { "abc" : { "summary": "x"} } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.examples',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].examples);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.examples.abc',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].examples['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.content.application/json.examples.abc.summary','x',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].examples['abc'].summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentEncodingEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { "encoding" : { "abc" : { } } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.encoding',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.encoding.abc',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].encoding['abc']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponses.TestContentEncodingContentType;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses": { "default" : { "content" : { "application/json" : { "encoding" : { "abc" : { "contentType" : "application/json" } } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content',OpenAPI.Paths['api'].get.responses['default'].content);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.encoding',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].encoding);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.content.application/json.encoding.abc',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].encoding['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.content.application/json.encoding.abc.contentType','application/json',OpenAPI.Paths['api'].get.responses['default'].content['application/json'].encoding['abc'].contentType);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathSecurity.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "security" : [ {} ] } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.security[0]',OpenAPI.Paths['api'].get.security[0]);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathSecurity.TestAPIKey;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "security" : [ { "api_key" : ["akey"] } ] } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.security[0]',OpenAPI.Paths['api'].get.security[0]);
|
|
AssertEquals('OpenAPI.paths.api.get.security[0].api_key[0]','akey',OpenAPI.Paths['api'].get.security[0].Requirements['api_key'].Strings[0]);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestOperatonRef;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "operationRef" : "123" } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.links.abc.operationRef','123',OpenAPI.Paths['api'].get.responses['default'].links['abc'].operationRef);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestOperatonId;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "operationId" : "123" } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.links.abc.operationId','123',OpenAPI.Paths['api'].get.responses['default'].links['abc'].operationId);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestParameters;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "parameters" : { "x" : "y" } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default.links.abc.parameters',OpenAPI.Paths['api'].get.responses['default'].links['abc'].parameters);
|
|
AssertEquals('OpenAPI.paths.api.get.responses.default.links.abc.parameters.x','y',OpenAPI.Paths['api'].get.responses['default'].links['abc'].parameters['x'].AsString);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestRequestBody;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "requestBody" : {} } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses.default',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links.abc.requestBody',OpenAPI.Paths['api'].get.responses['default'].links['abc'].requestBody);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestDescription;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "description" : "123" } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default]',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertEquals('OpenAPI.paths.api.get.responses[default].links.abc.description','123',OpenAPI.Paths['api'].get.responses['default'].links['abc'].description);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderPathResponsesLinks.TestServer;
|
|
|
|
begin
|
|
TestRead('{ "paths" : { "api" : { "get" : { "responses" : { "default" : { "links": { "abc" : { "server" : { "url" : "123" } } } } } } } } }');
|
|
AssertNotNull('OpenAPI.paths',OpenAPI.paths);
|
|
AssertNotNull('OpenAPI.paths.api',OpenAPI.Paths['api']);
|
|
AssertNotNull('OpenAPI.paths.api.get',OpenAPI.Paths['api'].get);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses',OpenAPI.Paths['api'].get.responses);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default]',OpenAPI.Paths['api'].get.responses['default']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links',OpenAPI.Paths['api'].get.responses['default'].links);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links.abc',OpenAPI.Paths['api'].get.responses['default'].links['abc']);
|
|
AssertNotNull('OpenAPI.paths.api.get.responses[default].links.abc.server',OpenAPI.Paths['api'].get.responses['default'].links['abc'].server);
|
|
AssertEquals('OpenAPI.paths.api.get.responses[default].links.abc.server.url','123',OpenAPI.Paths['api'].get.responses['default'].links['abc'].server.url);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderWebHooks.TestEmpty;
|
|
|
|
begin
|
|
TestRead('{ "webhooks" : { "newitem" : { } } }');
|
|
AssertNotNull('OpenAPI.webhooks',OpenAPI.webhooks);
|
|
AssertNotNull('OpenAPI.webhooks.newitem',OpenAPI.webhooks['newitem']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderWebHooks.TestSummary;
|
|
|
|
begin
|
|
TestRead('{ "webhooks" : { "newitem" : { "summary" : "abc" } } }');
|
|
AssertNotNull('OpenAPI.webhooks',OpenAPI.webhooks);
|
|
AssertNotNull('OpenAPI.webhooks.newitem',OpenAPI.webhooks['newitem']);
|
|
AssertEquals('OpenAPI.webhooks.newitem.summary','abc',OpenAPI.webhooks['newitem'].summary);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderComponents.TestSchemaEmpty;
|
|
|
|
begin
|
|
TestRead('{ "components" : { "schemas" : { "abc" : true } } }');
|
|
AssertNotNull('OpenAPI.components',OpenAPI.components);
|
|
AssertNotNull('OpenAPI.components.schemas',OpenAPI.components.schemas);
|
|
AssertNotNUll('OpenAPI.components.schemas.abc',OpenAPI.components.schemas['abc']);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderComponents.TestSchemaContentEncoding;
|
|
|
|
begin
|
|
TestRead('{ "components" : { "schemas" : { "abc" : { "contentEncoding" : "utf8" } } } }');
|
|
AssertNotNull('OpenAPI.components',OpenAPI.components);
|
|
AssertNotNull('OpenAPI.components.schemas',OpenAPI.components.schemas);
|
|
AssertNotNull('OpenAPI.components.schemas.abc',OpenAPI.components.schemas['abc']);
|
|
AssertEquals('OpenAPI.components.schemas.abc.contentEncoding','utf8',OpenAPI.components.schemas['abc'].Validations.contentEncoding);
|
|
end;
|
|
|
|
|
|
procedure TTestOpenApiReaderSecurity.TestOne;
|
|
|
|
begin
|
|
TestRead('{ "security" : [ { "abc" : [] } ] }');
|
|
end;
|
|
|
|
|
|
initialization
|
|
registertests('Reader',[
|
|
TTestOpenApiReaderLarge,
|
|
TTestopenApiReaderOpenAPI,
|
|
TTestopenApiReaderInfo,
|
|
TTestopenApiReaderTags,
|
|
TTestOpenApiReaderExternalDocs,
|
|
TTestOpenApiReaderServers,
|
|
TTestOpenApiReaderPaths,
|
|
TTestOpenApiReaderPathRequestBody,
|
|
TTestOpenApiReaderPathParameters,
|
|
TTestOpenApiReaderPathResponses,
|
|
TTestOpenApiReaderPathSecurity,
|
|
TTestOpenApiReaderPathResponsesLinks,
|
|
TTestOpenApiReaderWebHooks,
|
|
TTestOpenApiReaderComponents,
|
|
TTestOpenApiReaderSecurity
|
|
]);
|
|
|
|
end.
|
|
|