From 2225901332e3a9eff9247b24410e621129faab89 Mon Sep 17 00:00:00 2001 From: Amulya Kashyap Date: Sat, 24 Sep 2022 20:32:06 +0530 Subject: [PATCH] fix: ACNA-1787 - app init error - integration_type oauthsinglepageapp (#577) Co-authored-by: Shazron Abdullah <36107+shazron@users.noreply.github.com> --- schema/config.schema.json | 24 ++++++++++++++++++++++-- test/__fixtures__/existing.merged.aio | 5 +++++ test/__fixtures__/existing.merged.env | 3 +++ test/__fixtures__/invalid.config.json | 9 +++++++++ test/__fixtures__/valid.config.aio | 5 +++++ test/__fixtures__/valid.config.env | 3 +++ test/__fixtures__/valid.config.json | 10 ++++++++++ test/schema.test.js | 4 +++- 8 files changed, 60 insertions(+), 3 deletions(-) diff --git a/schema/config.schema.json b/schema/config.schema.json index d431ffd6..1c6d4e71 100644 --- a/schema/config.schema.json +++ b/schema/config.schema.json @@ -129,10 +129,12 @@ ] }, "jwt": { "$ref": "#/definitions/jwt" }, - "api_key": { "$ref": "#/definitions/api_key" }, - "oauth2": { "$ref": "#/definitions/oauth2" } + "api_key": { "$ref": "#/definitions/api_key" } }, "required": [ "id", "name" ], + "if": { "properties": { "integration_type": { "const": "oauthsinglepageapp" } } }, + "then": { "properties": { "oauth2": { "$ref": "#/definitions/oauthsinglepageapp" } } }, + "else": { "properties": { "oauth2": { "$ref": "#/definitions/oauth2" } } }, "oneOf": [ { "required": ["oauth2"] }, { "required": ["jwt"] }, @@ -174,6 +176,24 @@ }, "required": [ "client_id", "client_secret", "redirect_uri", "defaultRedirectUri" ] }, + "oauthsinglepageapp": { + "type": "object", + "properties": { + "client_id": { "type": "string" }, + "defaultRedirectUri": { + "type": "string", + "format": "uri" + }, + "redirect_uri": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + } + }, + "required": [ "client_id", "redirect_uri", "defaultRedirectUri" ] + }, "api_key": { "type": "object", "properties": { diff --git a/test/__fixtures__/existing.merged.aio b/test/__fixtures__/existing.merged.aio index 11fe854f..abfd665d 100644 --- a/test/__fixtures__/existing.merged.aio +++ b/test/__fixtures__/existing.merged.aio @@ -41,6 +41,11 @@ "name": "Project_C", "integration_type": "apikey" }, + { + "id": "17656570", + "name": "Project_D", + "integration_type": "oauthsinglepageapp" + }, { "id": "17950", "name": "New_Test_Intégration_8", diff --git a/test/__fixtures__/existing.merged.env b/test/__fixtures__/existing.merged.env index 65352bb6..c64aebfc 100644 --- a/test/__fixtures__/existing.merged.env +++ b/test/__fixtures__/existing.merged.env @@ -16,6 +16,9 @@ AIO_ims_contexts_PröjectB_technical__account__id=IDIDIDIDID@techacct.adobe.com AIO_ims_contexts_PröjectB_meta__scopes=["ent_smartcontent_sdk","ent_adobeio_sdk"] AIO_ims_contexts_PröjectB_ims__org__id=XOXOXOXOXOXOX@AdobeOrg AIO_ims_contexts_Project__C_client__id=AKAKAKAKAKAKAKAKAKAKAKAK +AIO_ims_contexts_Project__D_client__id=KAKAKAKAKAKAKAKAKAKAKAKA +AIO_ims_contexts_Project__D_redirect__uri=["https://test123"] +AIO_ims_contexts_Project__D_defaultRedirectUri=https://test123 AIO_ims_contexts_New__Test__Intégration__8_client__id=XRXRXRXRXRXRXRXRXR AIO_ims_contexts_New__Test__Intégration__8_client__secret=XRXRXRXRXRXRXRXRXRX AIO_ims_contexts_New__Test__Intégration__8_redirect__uri=["https://abc123/foo"] diff --git a/test/__fixtures__/invalid.config.json b/test/__fixtures__/invalid.config.json index 7f3480a1..5dccb963 100644 --- a/test/__fixtures__/invalid.config.json +++ b/test/__fixtures__/invalid.config.json @@ -49,6 +49,15 @@ "client_secret": "XYXYXYXYZZZZZZ" } }, + { + "id": "17656570", + "name": "Project D", + "integration_type": "oauthsinglepageapp", + "oauth2": { + "redirect_uri": [ "https://test123" ], + "defaultRedirectUri": "https://test123" + } + }, { "id": "17950", "name": "NewTestIntegration8", diff --git a/test/__fixtures__/valid.config.aio b/test/__fixtures__/valid.config.aio index 6000d71b..2dbb4705 100644 --- a/test/__fixtures__/valid.config.aio +++ b/test/__fixtures__/valid.config.aio @@ -33,6 +33,11 @@ "name": "Project_C", "integration_type": "apikey" }, + { + "id": "17656570", + "name": "Project_D", + "integration_type": "oauthsinglepageapp" + }, { "id": "17950", "name": "New_Test_Intégration_8", diff --git a/test/__fixtures__/valid.config.env b/test/__fixtures__/valid.config.env index 45685b86..9c479d97 100644 --- a/test/__fixtures__/valid.config.env +++ b/test/__fixtures__/valid.config.env @@ -12,6 +12,9 @@ AIO_ims_contexts_PröjectB_technical__account__id=IDIDIDIDID@techacct.adobe.com AIO_ims_contexts_PröjectB_meta__scopes=["ent_smartcontent_sdk","ent_adobeio_sdk"] AIO_ims_contexts_PröjectB_ims__org__id=XOXOXOXOXOXOX@AdobeOrg AIO_ims_contexts_Project__C_client__id=AKAKAKAKAKAKAKAKAKAKAKAK +AIO_ims_contexts_Project__D_client__id=KAKAKAKAKAKAKAKAKAKAKAKA +AIO_ims_contexts_Project__D_redirect__uri=["https://test123"] +AIO_ims_contexts_Project__D_defaultRedirectUri=https://test123 AIO_ims_contexts_New__Test__Intégration__8_client__id=XRXRXRXRXRXRXRXRXR AIO_ims_contexts_New__Test__Intégration__8_client__secret=XRXRXRXRXRXRXRXRXRX AIO_ims_contexts_New__Test__Intégration__8_redirect__uri=["https://abc123/foo"] diff --git a/test/__fixtures__/valid.config.json b/test/__fixtures__/valid.config.json index b0304046..04257e3b 100644 --- a/test/__fixtures__/valid.config.json +++ b/test/__fixtures__/valid.config.json @@ -52,6 +52,16 @@ "client_id": "AKAKAKAKAKAKAKAKAKAKAKAK" } }, + { + "id": "17656570", + "name": "Project D", + "integration_type": "oauthsinglepageapp", + "oauth2": { + "client_id": "KAKAKAKAKAKAKAKAKAKAKAKA", + "redirect_uri": [ "https://test123" ], + "defaultRedirectUri": "https://test123" + } + }, { "id": "17950", "name": "New Test Intégration 8", diff --git a/test/schema.test.js b/test/schema.test.js index 92b117b1..b36257c3 100644 --- a/test/schema.test.js +++ b/test/schema.test.js @@ -15,6 +15,8 @@ test('validate failure', () => { const valid = validate(fixtureJson('invalid.config.json')) // the 4 errors are the missing name properties, techacct migration to two new properties // the rest 3 are missing client_id and failing keyword `then` - expect(validate.errors.length).toEqual(7) + // 2 for failing if & else condition + // 1 for failing client_id required criteria + expect(validate.errors.length).toEqual(10) expect(valid).toBeFalsy() })