Skip to content

Commit

Permalink
fix(connector-corda): container image kotlin compilation fails in model
Browse files Browse the repository at this point in the history
Upgrades the OpenAPI generator to v5.1.1 which now requires that
the Configuration class instance to be passed in to the API clients
that are generated instead of just a JS object literal (POJO).

This version of OAG also changes how the enums are named in Typescript
so they are no longer fully uppercase so there are a lot of small-ish
code changes in the test cases that are mostly all tied to this.

Signed-off-by: Travis Payne <travis.payne@accenture.com>
Signed-off-by: Peter Somogyvari <peter.somogyvari@accenture.com>
  • Loading branch information
Travis Payne authored and petermetz committed May 29, 2021
1 parent e8708a6 commit a8a4531
Show file tree
Hide file tree
Showing 179 changed files with 3,766 additions and 1,475 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
import {
ApiServer,
ConfigService,
Configuration,
ICactusApiServerOptions,
} from "@hyperledger/cactus-cmd-api-server";

Expand Down Expand Up @@ -126,8 +127,10 @@ export class CarbonAccountingApp {
const addressInfo = httpApi.address() as AddressInfo;
const nodeApiHost = `http://localhost:${addressInfo.port}`;

const xdaiApiClient = new XdaiApi({ basePath: nodeApiHost });
const fabricApiClient = new FabricApi({ basePath: nodeApiHost });
const config = new Configuration({ basePath: nodeApiHost });

const xdaiApiClient = new XdaiApi(config);
const fabricApiClient = new FabricApi(config);

this.log.info(`Configuring Cactus Node for Ledger A...`);
const rpcApiHostA = await this.ledgers.xdai.getRpcApiHttpHost();
Expand All @@ -151,7 +154,7 @@ export class CarbonAccountingApp {
asLocalhost: true,
},
eventHandlerOptions: {
strategy: DefaultEventHandlerStrategy.NETWORKSCOPEALLFORTX,
strategy: DefaultEventHandlerStrategy.NetworkScopeAllfortx,
commitTimeout: 300,
},
});
Expand Down Expand Up @@ -186,7 +189,7 @@ export class CarbonAccountingApp {
web3SigningCredential: {
keychainEntryKey: xdaiAccount.address,
keychainId: this.keychainId,
type: Web3SigningCredentialType.CACTUSKEYCHAINREF,
type: Web3SigningCredentialType.CactusKeychainRef,
},
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ export class CarbonAccountingAppDummyInfrastructure {
web3SigningCredential: {
ethAccount: this.xdaiAccount.get().address,
secret: this.xdaiAccount.get().privateKey,
type: Web3SigningCredentialType.PRIVATEKEYHEX,
type: Web3SigningCredentialType.PrivateKeyHex,
},
});
const {
Expand Down Expand Up @@ -427,7 +427,7 @@ export class CarbonAccountingAppDummyInfrastructure {
web3SigningCredential: {
ethAccount: this.xdaiAccount.get().address,
secret: this.xdaiAccount.get().privateKey,
type: Web3SigningCredentialType.PRIVATEKEYHEX,
type: Web3SigningCredentialType.PrivateKeyHex,
},
});
const {
Expand Down Expand Up @@ -460,7 +460,7 @@ export class CarbonAccountingAppDummyInfrastructure {
web3SigningCredential: {
ethAccount: this.xdaiAccount.get().address,
secret: this.xdaiAccount.get().privateKey,
type: Web3SigningCredentialType.PRIVATEKEYHEX,
type: Web3SigningCredentialType.PrivateKeyHex,
},
});
const {
Expand Down Expand Up @@ -496,7 +496,7 @@ export class CarbonAccountingAppDummyInfrastructure {
web3SigningCredential: {
ethAccount: this.xdaiAccount.get().address,
secret: this.xdaiAccount.get().privateKey,
type: Web3SigningCredentialType.PRIVATEKEYHEX,
type: Web3SigningCredentialType.PrivateKeyHex,
},
});
const {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { StatusCodes } from "http-status-codes";
import {
AuthorizationProtocol,
ConfigService,
Configuration,
IAuthorizationConfig,
} from "@hyperledger/cactus-cmd-api-server";

Expand Down Expand Up @@ -118,7 +119,7 @@ test(testCase, async (t: Test) => {
const verification = JWT.verify(tokenWithScope, jwtKeyPair, jwtSignOptions);
t.ok(verification, "JWT with scope verification truthy OK");

const apiClient = new CarbonAccountingApi({
const configTokenWithScope = new Configuration({
basePath: apiBaseUrl,
baseOptions: {
headers: {
Expand All @@ -127,6 +128,8 @@ test(testCase, async (t: Test) => {
},
});

const apiClient = new CarbonAccountingApi(configTokenWithScope);

const res = await apiClient.enrollAdminV1({
orgName: "Org1MSP",
});
Expand All @@ -136,7 +139,7 @@ test(testCase, async (t: Test) => {

const tokenNoScope = JWT.sign({ scope: [] }, jwtKeyPair, jwtSignOptions);

const apiClientBad = new CarbonAccountingApi({
const configTokenWithoutScope = new Configuration({
basePath: apiBaseUrl,
baseOptions: {
headers: {
Expand All @@ -145,6 +148,8 @@ test(testCase, async (t: Test) => {
},
});

const apiClientBad = new CarbonAccountingApi(configTokenWithoutScope);

try {
await apiClientBad.enrollAdminV1({ orgName: "does-not-matter" });
t.fail("enroll admin response status === 403 FAIL");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "5.1.1"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"dist/*"
],
"scripts": {
"generate-sdk": "docker run --rm -v \"${PWD}:/local\" openapitools/openapi-generator-cli:v5.0.0-beta2 generate -i ./local/src/main/json/openapi.json -g typescript-axios -o ./local/src/main/typescript/generated/openapi/typescript-axios --reserved-words-mappings protected=protected",
"generate-sdk": "docker run --rm -v \"${PWD}:/local\" openapitools/openapi-generator-cli:v5.1.1 generate -i ./local/src/main/json/openapi.json -g typescript-axios -o ./local/src/main/typescript/generated/openapi/typescript-axios --reserved-words-mappings protected=protected",
"tsc": "tsc --project ./tsconfig.json",
"pretsc": "npm run generate-sdk",
"watch": "npm-watch",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
api.ts
base.ts
common.ts
configuration.ts
index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.0.0-beta2
5.1.1
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import { Configuration } from './configuration';
import globalAxios, { AxiosPromise, AxiosInstance } from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base';

/**
Expand All @@ -25,6 +27,9 @@ import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } fr
* @enum {string}
*/
export enum AuthzJwtClaim {
/**
* The &quot;iss&quot; (issuer) claim identifies the principal that issued the JWT. The processing of this claim is generally application specific. The &quot;iss&quot; value is a case-sensitive string containing a StringOrURI value. Use of this claim is OPTIONAL.
*/
iss = 'Hyperledger Labs - Carbon Accounting Tool'
}

Expand All @@ -34,7 +39,13 @@ export enum AuthzJwtClaim {
* @enum {string}
*/
export enum AuthzScope {
/**
* Identities with the group:admin scope are administrators of the system.
*/
GroupAdmin = 'group:admin',
/**
* Identities with the group:user scope are end users of the system who only have authorization to perform a limited set of actions.
*/
GroupUser = 'group:user'
}

Expand Down Expand Up @@ -185,11 +196,12 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati
daoTokenGetAllowance: async (daoTokenGetAllowanceRequest?: DaoTokenGetAllowanceRequest, options: any = {}): Promise<RequestArgs> => {
const localVarPath = `/api/v1/plugins/@hyperledger/cactus-example-carbon-accounting-backend/dao-token/get-allowance`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}

const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
Expand All @@ -198,21 +210,13 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati

localVarHeaderParameter['Content-Type'] = 'application/json';

const query = new URLSearchParams(localVarUrlObj.search);
for (const key in localVarQueryParameter) {
query.set(key, localVarQueryParameter[key]);
}
for (const key in options.query) {
query.set(key, options.query[key]);
}
localVarUrlObj.search = (new URLSearchParams(query)).toString();
setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
const needsSerialization = (typeof daoTokenGetAllowanceRequest !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
localVarRequestOptions.data = needsSerialization ? JSON.stringify(daoTokenGetAllowanceRequest !== undefined ? daoTokenGetAllowanceRequest : {}) : (daoTokenGetAllowanceRequest || "");
localVarRequestOptions.data = serializeDataIfNeeded(daoTokenGetAllowanceRequest, localVarRequestOptions, configuration)

return {
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
};
},
Expand All @@ -226,11 +230,12 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati
enrollAdminV1: async (enrollAdminV1Request?: EnrollAdminV1Request, options: any = {}): Promise<RequestArgs> => {
const localVarPath = `/api/v1/utilityemissionchannel/registerEnroll/admin`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}

const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
Expand All @@ -239,21 +244,13 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati

localVarHeaderParameter['Content-Type'] = 'application/json';

const query = new URLSearchParams(localVarUrlObj.search);
for (const key in localVarQueryParameter) {
query.set(key, localVarQueryParameter[key]);
}
for (const key in options.query) {
query.set(key, options.query[key]);
}
localVarUrlObj.search = (new URLSearchParams(query)).toString();
setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
const needsSerialization = (typeof enrollAdminV1Request !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
localVarRequestOptions.data = needsSerialization ? JSON.stringify(enrollAdminV1Request !== undefined ? enrollAdminV1Request : {}) : (enrollAdminV1Request || "");
localVarRequestOptions.data = serializeDataIfNeeded(enrollAdminV1Request, localVarRequestOptions, configuration)

return {
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
};
},
Expand All @@ -265,6 +262,7 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati
* @export
*/
export const DefaultApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = DefaultApiAxiosParamCreator(configuration)
return {
/**
*
Expand All @@ -274,11 +272,8 @@ export const DefaultApiFp = function(configuration?: Configuration) {
* @throws {RequiredError}
*/
async daoTokenGetAllowance(daoTokenGetAllowanceRequest?: DaoTokenGetAllowanceRequest, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DaoTokenGetAllowanceResponse>> {
const localVarAxiosArgs = await DefaultApiAxiosParamCreator(configuration).daoTokenGetAllowance(daoTokenGetAllowanceRequest, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
const localVarAxiosArgs = await localVarAxiosParamCreator.daoTokenGetAllowance(daoTokenGetAllowanceRequest, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
*
Expand All @@ -288,11 +283,8 @@ export const DefaultApiFp = function(configuration?: Configuration) {
* @throws {RequiredError}
*/
async enrollAdminV1(enrollAdminV1Request?: EnrollAdminV1Request, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EnrollAdminV1Response>> {
const localVarAxiosArgs = await DefaultApiAxiosParamCreator(configuration).enrollAdminV1(enrollAdminV1Request, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
};
const localVarAxiosArgs = await localVarAxiosParamCreator.enrollAdminV1(enrollAdminV1Request, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
}
};
Expand All @@ -302,6 +294,7 @@ export const DefaultApiFp = function(configuration?: Configuration) {
* @export
*/
export const DefaultApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
const localVarFp = DefaultApiFp(configuration)
return {
/**
*
Expand All @@ -311,7 +304,7 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa
* @throws {RequiredError}
*/
daoTokenGetAllowance(daoTokenGetAllowanceRequest?: DaoTokenGetAllowanceRequest, options?: any): AxiosPromise<DaoTokenGetAllowanceResponse> {
return DefaultApiFp(configuration).daoTokenGetAllowance(daoTokenGetAllowanceRequest, options).then((request) => request(axios, basePath));
return localVarFp.daoTokenGetAllowance(daoTokenGetAllowanceRequest, options).then((request) => request(axios, basePath));
},
/**
*
Expand All @@ -321,7 +314,7 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa
* @throws {RequiredError}
*/
enrollAdminV1(enrollAdminV1Request?: EnrollAdminV1Request, options?: any): AxiosPromise<EnrollAdminV1Response> {
return DefaultApiFp(configuration).enrollAdminV1(enrollAdminV1Request, options).then((request) => request(axios, basePath));
return localVarFp.enrollAdminV1(enrollAdminV1Request, options).then((request) => request(axios, basePath));
},
};
};
Expand Down
Loading

0 comments on commit a8a4531

Please sign in to comment.