blob: 00bf1656781ca1771b046c3f208dfa635464a1d8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.unomi.services.impl;
import org.apache.unomi.api.Event;
import org.apache.unomi.api.Profile;
import org.apache.unomi.services.impl.events.EventServiceImpl;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
public class EventServiceImplTest {
@Test
public void testThirdPartyAuthenticationAndRestrictedEvents() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"127.0.0.1,::1",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
String authenticateServerName = eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "127.0.0.1");
assertEquals("provider1", authenticateServerName);
// test allowed events
assertTrue(eventService.isEventAllowed(new Event("test1", null, new Profile(), null, null, null, null), authenticateServerName));
assertTrue(eventService.isEventAllowed(new Event("test2", null, new Profile(), null, null, null, null), authenticateServerName));
assertTrue(eventService.isEventAllowed(new Event("test4", null, new Profile(), null, null, null, null), authenticateServerName));
// test restricted events
assertFalse(eventService.isEventAllowed(new Event("test3", null, new Profile(), null, null, null, null), authenticateServerName));
}
@Test
public void testNotAuthenticatedRestrictedEvents() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"127.0.0.1,::1",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
String authenticateServerName = eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.15");
assertNull("Server should not be authenticate, ip is not matching a declared thirdparty server", authenticateServerName);
// test allowed events
assertTrue(eventService.isEventAllowed(new Event("test4", null, new Profile(), null, null, null, null), authenticateServerName));
// test restricted events
assertFalse(eventService.isEventAllowed(new Event("test1", null, new Profile(), null, null, null, null), authenticateServerName));
assertFalse(eventService.isEventAllowed(new Event("test2", null, new Profile(), null, null, null, null), authenticateServerName));
assertFalse(eventService.isEventAllowed(new Event("test3", null, new Profile(), null, null, null, null), authenticateServerName));
}
@Test
public void testThirdPartyAuthentication_ip_range() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"192.168.1.1-100",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.1"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.2"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.3"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.98"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.99"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.100"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.101"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.2.2"));
}
@Test
public void testThirdPartyAuthentication_ip_subnet() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"1.2.0.0/16",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.0.0"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.1.1"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.2.2"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.50.125"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.50.125"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.100"));
}
@Test
public void testThirdPartyAuthentication_ip_wildcards() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"1.2.*.*",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.0.0"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.1.1"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.2.2"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.50.125"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.50.125"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.100"));
}
@Test
public void testThirdPartyAuthentication_ip_combined() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"1.*.2-3.4",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.3.4"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.50.2.4"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.50.4"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.3.5"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.100"));
}
@Test
public void testThirdPartyAuthentication_ip_multiple() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"1.*.2-3.4,192.168.1.1-100,::1",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.3.4"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.50.2.4"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.1"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.2"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.50.4"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.3.5"));
assertNull(eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.101"));
}
@Test
public void testThirdPartyAuthentication_ip_matchAll() {
EventServiceImpl eventService = mockEventServiceForThirdPartyTests(
"670c26d1cc413346c3b2fd9ce65dab41",
"*.*.*.*",
"test1,test2",
Arrays.asList("test1", "test2", "test3")
);
// test authentication
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.0.0"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.1.1"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.2.2"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.2.50.125"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "1.3.50.125"));
assertEquals("provider1", eventService.authenticateThirdPartyServer("670c26d1cc413346c3b2fd9ce65dab41", "192.168.1.100"));
}
private EventServiceImpl mockEventServiceForThirdPartyTests(String key, String ipAddresses, String allowedEvents, List<String> restrictedEventTypeIds) {
// conf
Map<String, String> thirdPartyConfiguration = new HashMap<>();
thirdPartyConfiguration.put("thirdparty.provider1.key", key);
thirdPartyConfiguration.put("thirdparty.provider1.ipAddresses", ipAddresses);
thirdPartyConfiguration.put("thirdparty.provider1.allowedEvents", allowedEvents);
// mock service
EventServiceImpl eventService = new EventServiceImpl();
eventService.setThirdPartyConfiguration(thirdPartyConfiguration);
eventService.setRestrictedEventTypeIds(new HashSet<>(restrictedEventTypeIds));
return eventService;
}
}