/* * (C) Copyright 2010 Nuxeo SA (http://nuxeo.com/) and others. * * 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. * * Contributors: * Nuxeo - initial API and implementation */ package org.nuxeo.ecm.platform.oauth.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import org.junit.Test; import org.junit.runner.RunWith; import org.nuxeo.ecm.core.api.DocumentModel; import org.nuxeo.ecm.directory.Session; import org.nuxeo.ecm.directory.api.DirectoryService; import org.nuxeo.ecm.platform.oauth.providers.NuxeoOAuthServiceProvider; import org.nuxeo.ecm.platform.oauth.providers.OAuthServiceProviderRegistry; import org.nuxeo.ecm.platform.oauth.providers.OAuthServiceProviderRegistryImpl; import org.nuxeo.ecm.platform.oauth2.providers.OAuth2ServiceProviderRegistry; import org.nuxeo.runtime.api.Framework; import org.nuxeo.runtime.test.runner.Features; import org.nuxeo.runtime.test.runner.FeaturesRunner; @RunWith(FeaturesRunner.class) @Features(OAuthFeature.class) public class TestServiceProviderService { @Inject OAuthServiceProviderRegistry providerRegistry = Framework.getLocalService(OAuthServiceProviderRegistry.class); @Inject OAuth2ServiceProviderRegistry providerRegistry2 = Framework.getLocalService(OAuth2ServiceProviderRegistry.class); @Test public void testServiceLookup2() throws Exception { assertNotNull(providerRegistry); } @Test public void testServiceRW() throws Exception { NuxeoOAuthServiceProvider p = providerRegistry.addReadOnlyProvider("a", null, "b", null, null); assertNotNull(p); assertNotNull(p.getGadgetUrl()); assertNotNull(p.getId()); NuxeoOAuthServiceProvider p2 = providerRegistry.getProvider(p.getGadgetUrl(), p.getServiceName()); assertEquals(p.getId(), p2.getId()); DirectoryService ds = Framework.getService(DirectoryService.class); try (Session session = ds.open(OAuthServiceProviderRegistryImpl.DIRECTORY_NAME)) { Map<String, Object> init = new HashMap<String, Object>(); init.put("gadgetUrl", "http://127.0.0.1:8080/nuxeo/gadget1"); init.put("serviceName", ""); init.put("consumerKey", "key1"); init.put("consumerSecret", "secret"); init.put("publicKey", "pk"); DocumentModel entry = session.createEntry(init); session.updateEntry(entry); init.put("gadgetUrl", "http://127.0.0.1:8080/nuxeo/gadget2"); init.put("serviceName", ""); init.put("consumerKey", "key2"); init.put("consumerSecret", "secret"); init.put("publicKey", "pk"); entry = session.createEntry(init); session.updateEntry(entry); init.put("gadgetUrl", "http://127.0.0.1:8080/nuxeo/gadget3"); init.put("serviceName", "sn1"); init.put("consumerKey", "key3"); init.put("consumerSecret", "secret"); init.put("publicKey", "pk"); entry = session.createEntry(init); session.updateEntry(entry); init.put("gadgetUrl", ""); init.put("serviceName", "sn2"); init.put("consumerKey", "key4"); init.put("consumerSecret", "secret"); init.put("publicKey", "pk"); entry = session.createEntry(init); session.updateEntry(entry); } assertEquals(5, providerRegistry.listProviders().size()); NuxeoOAuthServiceProvider p3 = providerRegistry.getProvider("http://127.0.0.1:8080/nuxeo/gadget1", null); assertNotNull(p3); assertEquals("key1", p3.getConsumerKey()); p3 = providerRegistry.getProvider("http://localhost:8080/nuxeo/gadget1", null); assertNotNull(p3); assertEquals("key1", p3.getConsumerKey()); p3 = providerRegistry.getProvider("http://127.0.0.1:8080/nuxeo/gadget1", "undeclaredservice"); assertNotNull(p3); assertEquals("key1", p3.getConsumerKey()); p3 = providerRegistry.getProvider("http://127.0.0.1:8080/nuxeo/gadget2", null); assertNotNull(p3); assertEquals("key2", p3.getConsumerKey()); p3 = providerRegistry.getProvider("http://127.0.0.1:8080/nuxeo/gadget3", null); assertNull(p3); p3 = providerRegistry.getProvider("http://127.0.0.1:8080/nuxeo/gadget3", "sn1"); assertNotNull(p3); assertEquals("key3", p3.getConsumerKey()); p3 = providerRegistry.getProvider(null, "sn1"); assertNull(p3); p3 = providerRegistry.getProvider(null, "sn2"); assertNotNull(p3); assertEquals("key4", p3.getConsumerKey()); p3 = providerRegistry.getProvider("undeclared gadget", "sn2"); assertNotNull(p3); assertEquals("key4", p3.getConsumerKey()); } }