@Before public void setUp() { strategy = new DefaultMultifactorTriggerSelectionStrategy(); strategy.setGlobalPrincipalAttributeNameTriggers(P_ATTRS_12); strategy.setRequestParameter(REQUEST_PARAM); when(MFA_PROVIDER_1.getId()).thenReturn(MFA_PROVIDER_ID_1); when(MFA_PROVIDER_2.getId()).thenReturn(MFA_PROVIDER_ID_2); }
@Test public void verifyRequestParameterTrigger() throws Exception { // opt-in parameter only assertThat( strategy.resolve(VALID_PROVIDERS, mockRequest(MFA_PROVIDER_ID_1), null, null).orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy.resolve(VALID_PROVIDERS, mockRequest(MFA_PROVIDER_ID_2), null, null).orElse(null), is(MFA_PROVIDER_ID_2)); assertThat( strategy.resolve(VALID_PROVIDERS, mockRequest(MFA_INVALID), null, null).isPresent(), is(false)); }
@Test public void verifyNoProviders() throws Exception { assertThat( strategy .resolve( NO_PROVIDERS, mockRequest(MFA_PROVIDER_ID_1), mockService(MFA_PROVIDER_ID_1), null) .isPresent(), is(false)); }
@Test public void verifyPrincipalAttributeTrigger() throws Exception { // Principal attribute trigger assertThat( strategy .resolve(VALID_PROVIDERS, null, null, mockPrincipal(P_ATTR_1, MFA_PROVIDER_ID_1)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve(VALID_PROVIDERS, null, null, mockPrincipal(P_ATTR_1, MFA_PROVIDER_ID_2)) .orElse(null), is(MFA_PROVIDER_ID_2)); assertThat( strategy .resolve(VALID_PROVIDERS, null, null, mockPrincipal(P_ATTR_1, MFA_INVALID)) .isPresent(), is(false)); }
@Test public void verifyMultipleTriggers() throws Exception { // opt-in overrides everything assertThat( strategy .resolve( VALID_PROVIDERS, mockRequest(MFA_PROVIDER_ID_1), mockService(MFA_PROVIDER_ID_2), mockPrincipal(P_ATTR_1, MFA_PROVIDER_ID_2)) .orElse(null), is(MFA_PROVIDER_ID_1)); // RegisteredService overrides Principal attribute assertThat( strategy .resolve( VALID_PROVIDERS, mockRequest(MFA_INVALID), mockService(MFA_PROVIDER_ID_1), mockPrincipal(P_ATTR_1, MFA_PROVIDER_ID_2)) .orElse(null), is(MFA_PROVIDER_ID_1)); }
@Test public void verifyRegisteredServiceTrigger() throws Exception { // regular RegisteredService trigger assertThat( strategy.resolve(VALID_PROVIDERS, null, mockService(MFA_PROVIDER_ID_1), null).orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy.resolve(VALID_PROVIDERS, null, mockService(MFA_PROVIDER_ID_2), null).orElse(null), is(MFA_PROVIDER_ID_2)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockService(MFA_INVALID, MFA_PROVIDER_ID_1, MFA_PROVIDER_ID_2), null) .get(), is(MFA_PROVIDER_ID_1)); assertThat( strategy.resolve(VALID_PROVIDERS, null, mockService(MFA_INVALID), null).isPresent(), is(false)); // Principal attribute activated RegisteredService trigger - direct match assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTR_1, VALUE_1), mockPrincipal(RS_ATTR_1, VALUE_1)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTR_1, VALUE_1), mockPrincipal(RS_ATTR_1, VALUE_2)) .orElse(null), nullValue()); // Principal attribute activated RegisteredService trigger - multiple attrs assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_1), mockPrincipal(RS_ATTR_1, VALUE_1)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_1), mockPrincipal(RS_ATTR_2, VALUE_1)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_1), mockPrincipal(RS_ATTR_3, VALUE_1)) .orElse(null), nullValue()); // Principal attribute activated RegisteredService trigger - pattern value assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_PATTERN), mockPrincipal(RS_ATTR_2, VALUE_1)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_PATTERN), mockPrincipal(RS_ATTR_2, VALUE_2)) .orElse(null), is(MFA_PROVIDER_ID_1)); assertThat( strategy .resolve( VALID_PROVIDERS, null, mockPrincipalService(MFA_PROVIDER_ID_1, RS_ATTRS_12, VALUE_PATTERN), mockPrincipal(RS_ATTR_2, VALUE_NOMATCH)) .isPresent(), is(false)); }