diff --git a/impl/src/main/java/com/okta/sdk/impl/resource/EventHookBuilder.java b/impl/src/main/java/com/okta/sdk/impl/resource/EventHookBuilder.java new file mode 100644 index 00000000000..9961c6cf165 --- /dev/null +++ b/impl/src/main/java/com/okta/sdk/impl/resource/EventHookBuilder.java @@ -0,0 +1,105 @@ +/* + * Copyright 2020-Present Okta, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.okta.sdk.impl.resource; + +import com.google.common.net.HttpHeaders; +import com.okta.commons.lang.Classes; +import com.okta.sdk.client.Client; +import com.okta.sdk.resource.event.hook.EventHook; +import com.okta.sdk.resource.event.hook.EventHookChannel; +import com.okta.sdk.resource.event.hook.EventHookChannelConfig; +import com.okta.sdk.resource.event.hook.EventHookChannelConfigHeader; +import com.okta.sdk.resource.event.hook.EventHookChannelConfigAuthScheme; +import com.okta.sdk.resource.event.hook.EventHookChannelConfigAuthSchemeType; +import com.okta.sdk.resource.event.hook.EventSubscriptions; + +import java.util.Arrays; +import java.util.List; + +/** + * Builder for {@link EventHook}. + * @since 2.0.0 + */ +public class EventHookBuilder { + + private static final String LIFECYCLE_EVENT_CREATE = "user.lifecycle.create"; + private static final String LIFECYCLE_EVENT_ACTIVATE = "user.lifecycle.activate"; + + private String name; + private String url; + private String authorizationHeaderValue; + private List headers; + private String version; + + public EventHookBuilder setName(String name) { + this.name = name; + return this; + } + + public EventHookBuilder setUrl(String url) { + this.url = url; + return this; + } + + public EventHookBuilder setAuthorizationHeaderValue(String authorizationHeaderValue) { + this.authorizationHeaderValue = authorizationHeaderValue; + return this; + } + + private EventHookBuilder setHeaders(List headers) { + this.headers = headers; + return this; + } + + public EventHookBuilder setVersion(String version) { + this.version = version; + return this; + } + + public EventHook buildAndCreate(Client client) { + + EventSubscriptions eventSubscriptions = client.instantiate(EventSubscriptions.class) + .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) + .setItems(Arrays.asList(LIFECYCLE_EVENT_CREATE, LIFECYCLE_EVENT_ACTIVATE)); + + EventHookChannelConfigAuthScheme eventHookChannelConfigAuthScheme = + client.instantiate(EventHookChannelConfigAuthScheme.class) + .setType(EventHookChannelConfigAuthSchemeType.HEADER) + .setKey(HttpHeaders.AUTHORIZATION) + .setValue(authorizationHeaderValue); + + EventHookChannelConfig eventHookChannelConfig = client.instantiate(EventHookChannelConfig.class) + .setUri(url) + .setHeaders(headers) + .setAuthScheme(eventHookChannelConfigAuthScheme); + + EventHookChannel eventHookChannel = client.instantiate(EventHookChannel.class) + .setType(EventHookChannel.TypeEnum.HTTP) + .setVersion(version) + .setConfig(eventHookChannelConfig); + + EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook.class) + .setName(name) + .setEvents(eventSubscriptions) + .setChannel(eventHookChannel)); + + return createdEventHook; + } + + static EventHookBuilder instance() { + return Classes.newInstance("com.okta.sdk.impl.resource.EventHookBuilder"); + } +} diff --git a/integration-tests/src/test/groovy/com/okta/sdk/tests/it/EventHooksIT.groovy b/integration-tests/src/test/groovy/com/okta/sdk/tests/it/EventHooksIT.groovy index e8f68f9dc28..348dbf701e0 100644 --- a/integration-tests/src/test/groovy/com/okta/sdk/tests/it/EventHooksIT.groovy +++ b/integration-tests/src/test/groovy/com/okta/sdk/tests/it/EventHooksIT.groovy @@ -15,15 +15,14 @@ */ package com.okta.sdk.tests.it +import com.okta.sdk.impl.resource.EventHookBuilder import com.okta.sdk.resource.ResourceException -import com.okta.sdk.resource.event.hook.EventHookChannel -import com.okta.sdk.resource.event.hook.EventHookChannelConfig import com.okta.sdk.resource.event.hook.EventHookChannelConfigAuthScheme import com.okta.sdk.resource.event.hook.EventHookChannelConfigHeader -import com.okta.sdk.resource.event.hook.EventSubscriptions import com.okta.sdk.resource.event.hook.EventHook import com.okta.sdk.resource.event.hook.EventHookChannelConfigAuthSchemeType import com.okta.sdk.resource.event.hook.EventHookList + import com.okta.sdk.tests.it.util.ITSupport import org.testng.annotations.Test @@ -45,23 +44,15 @@ class EventHooksIT extends ITSupport { void createEventHookTest() { String name = "event-hook-java-sdk-${UUID.randomUUID().toString()}" - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue()) @@ -77,23 +68,15 @@ class EventHooksIT extends ITSupport { void getEventHookTest() { String name = "event-hook-java-sdk-${UUID.randomUUID().toString()}" - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue()) @@ -113,23 +96,15 @@ class EventHooksIT extends ITSupport { void updateEventHookTest() { String name = "event-hook-java-sdk-${UUID.randomUUID().toString()}" - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue()) @@ -158,23 +133,15 @@ class EventHooksIT extends ITSupport { void deleteEventHookTest() { String name = "event-hook-java-sdk-${UUID.randomUUID().toString()}" - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue()) @@ -202,25 +169,15 @@ class EventHooksIT extends ITSupport { EventHookList eventHookList = client.listEventHooks() - int listSize = eventHookList.size() - - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue()) @@ -236,23 +193,15 @@ class EventHooksIT extends ITSupport { void activateDeactivateEventHookTest() { String name = "event-hook-java-sdk-${UUID.randomUUID().toString()}" - EventHook createdEventHook = client.createEventHook(client.instantiate(EventHook) + EventHook createdEventHook = EventHookBuilder.instance() .setName(name) - .setEvents(client.instantiate(EventSubscriptions) - .setType(EventSubscriptions.TypeEnum.EVENT_TYPE) - .setItems(["user.lifecycle.create", "user.lifecycle.activate"])) - .setChannel(client.instantiate(EventHookChannel) - .setType(EventHookChannel.TypeEnum.HTTP) - .setVersion("1.0.0") - .setConfig(client.instantiate(EventHookChannelConfig) - .setUri("https://www.example.com/eventHooks") - .setHeaders([ client.instantiate(EventHookChannelConfigHeader) - .setKey("X-Test-Header") - .setValue("Test header value")]) - .setAuthScheme(client.instantiate(EventHookChannelConfigAuthScheme) - .setType(EventHookChannelConfigAuthSchemeType.HEADER) - .setKey("Authorization") - .setValue("Test-Api-Key"))))) + .setUrl("https://www.example.com/eventHooks") + .setVersion("1.0.0") + .setAuthorizationHeaderValue("Test-Api-Key") + .setHeaders(Arrays.asList(client.instantiate(EventHookChannelConfigHeader) + .setKey("X-Test-Header") + .setValue("Test header value"))) + .buildAndCreate(client); registerForCleanup(createdEventHook) assertThat(createdEventHook.getId(), notNullValue())