Search in sources :

Example 1 with OAuth1Operations

use of org.springframework.social.oauth1.OAuth1Operations in project syndesis by syndesisio.

the class OAuth1CredentialProvider method prepare.

@Override
public CredentialFlowState prepare(final String connectorId, final URI baseUrl, final URI returnUrl) {
    final OAuth1CredentialFlowState.Builder flowState = new OAuth1CredentialFlowState.Builder().returnUrl(returnUrl).providerId(id);
    final OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations();
    final OAuth1Parameters parameters = new OAuth1Parameters();
    final String stateKey = UUID.randomUUID().toString();
    flowState.key(stateKey);
    final OAuthToken oAuthToken;
    final OAuth1Version oAuthVersion = oauthOperations.getVersion();
    if (oAuthVersion == OAuth1Version.CORE_10) {
        parameters.setCallbackUrl(callbackUrlFor(baseUrl, EMPTY));
        oAuthToken = oauthOperations.fetchRequestToken(null, null);
    } else if (oAuthVersion == OAuth1Version.CORE_10_REVISION_A) {
        oAuthToken = oauthOperations.fetchRequestToken(callbackUrlFor(baseUrl, EMPTY), null);
    } else {
        throw new IllegalStateException("Unsupported OAuth 1 version: " + oAuthVersion);
    }
    flowState.token(oAuthToken);
    final String redirectUrl = oauthOperations.buildAuthorizeUrl(oAuthToken.getValue(), parameters);
    flowState.redirectUrl(redirectUrl);
    flowState.connectorId(connectorId);
    return flowState.build();
}
Also used : OAuthToken(org.springframework.social.oauth1.OAuthToken) OAuth1Parameters(org.springframework.social.oauth1.OAuth1Parameters) OAuth1Version(org.springframework.social.oauth1.OAuth1Version) OAuth1Operations(org.springframework.social.oauth1.OAuth1Operations)

Example 2 with OAuth1Operations

use of org.springframework.social.oauth1.OAuth1Operations in project syndesis by syndesisio.

the class CredentialsTest method shouldFinishOAuth1Acquisition.

@Test
public void shouldFinishOAuth1Acquisition() {
    final OAuthToken token = new OAuthToken("value", "secret");
    final OAuth1ConnectionFactory<?> oauth1 = mock(OAuth1ConnectionFactory.class);
    final OAuth1Applicator applicator = new OAuth1Applicator(properties);
    when(locator.providerWithId("providerId")).thenReturn(new OAuth1CredentialProvider<>("providerId", oauth1, applicator));
    final OAuth1Operations operations = mock(OAuth1Operations.class);
    when(oauth1.getOAuthOperations()).thenReturn(operations);
    final ArgumentCaptor<AuthorizedRequestToken> requestToken = ArgumentCaptor.forClass(AuthorizedRequestToken.class);
    final OAuthToken accessToken = new OAuthToken("tokenValue", "tokenSecret");
    @SuppressWarnings({ "unchecked", "rawtypes" }) final Class<MultiValueMap<String, String>> multimapType = (Class) MultiValueMap.class;
    when(operations.exchangeForAccessToken(requestToken.capture(), isNull(multimapType))).thenReturn(accessToken);
    applicator.setAccessTokenSecretProperty("accessTokenSecretProperty");
    applicator.setAccessTokenValueProperty("accessTokenValueProperty");
    applicator.setConsumerKeyProperty("consumerKeyProperty");
    applicator.setConsumerSecretProperty("consumerSecretProperty");
    final CredentialFlowState flowState = new OAuth1CredentialFlowState.Builder().providerId("providerId").token(token).returnUrl(URI.create("/ui#state")).verifier("verifier").build();
    final CredentialFlowState finalFlowState = credentials.finishAcquisition(flowState, URI.create("https://www.example.com"));
    final AuthorizedRequestToken capturedRequestToken = requestToken.getValue();
    assertThat(capturedRequestToken.getValue()).isEqualTo("value");
    assertThat(capturedRequestToken.getSecret()).isEqualTo("secret");
    assertThat(capturedRequestToken.getVerifier()).isEqualTo("verifier");
    assertThat(finalFlowState).isEqualTo(new OAuth1CredentialFlowState.Builder().createFrom(flowState).accessToken(accessToken).build());
}
Also used : OAuthToken(org.springframework.social.oauth1.OAuthToken) AuthorizedRequestToken(org.springframework.social.oauth1.AuthorizedRequestToken) OAuth1Operations(org.springframework.social.oauth1.OAuth1Operations) MultiValueMap(org.springframework.util.MultiValueMap) Test(org.junit.Test)

Example 3 with OAuth1Operations

use of org.springframework.social.oauth1.OAuth1Operations in project syndesis by syndesisio.

the class CredentialsTest method shouldAcquireOAuth1aCredentials.

@Test
public void shouldAcquireOAuth1aCredentials() {
    final OAuth1ConnectionFactory<?> oauth1 = mock(OAuth1ConnectionFactory.class);
    @SuppressWarnings("unchecked") final Applicator<OAuthToken> applicator = mock(Applicator.class);
    when(locator.providerWithId("providerId")).thenReturn(new OAuth1CredentialProvider<>("providerId", oauth1, applicator));
    final OAuth1Operations operations = mock(OAuth1Operations.class);
    when(oauth1.getOAuthOperations()).thenReturn(operations);
    when(operations.getVersion()).thenReturn(OAuth1Version.CORE_10_REVISION_A);
    final OAuthToken token = new OAuthToken("value", "secret");
    when(operations.fetchRequestToken("https://syndesis.io/api/v1/credentials/callback", null)).thenReturn(token);
    final ArgumentCaptor<OAuth1Parameters> parameters = ArgumentCaptor.forClass(OAuth1Parameters.class);
    when(operations.buildAuthorizeUrl(eq("value"), parameters.capture())).thenReturn("https://provider.io/oauth/authorize");
    final AcquisitionFlow acquisition = credentials.acquire("providerId", URI.create("https://syndesis.io/api/v1/"), URI.create("https://syndesis.io/ui#state"));
    final CredentialFlowState expectedFlowState = new OAuth1CredentialFlowState.Builder().providerId("providerId").redirectUrl("https://provider.io/oauth/authorize").returnUrl(URI.create("https://syndesis.io/ui#state")).token(token).build();
    final AcquisitionFlow expected = new AcquisitionFlow.Builder().type(Type.OAUTH1).redirectUrl("https://provider.io/oauth/authorize").state(expectedFlowState).build();
    assertThat(acquisition).isEqualToIgnoringGivenFields(expected, "state");
    final Optional<CredentialFlowState> maybeState = acquisition.state();
    assertThat(maybeState).isPresent();
    final CredentialFlowState state = maybeState.get();
    assertThat(state).isEqualToIgnoringGivenFields(expectedFlowState, "key");
    assertThat(state.getKey()).isNotNull();
    final OAuth1Parameters oAuth1Parameters = parameters.getValue();
    assertThat(oAuth1Parameters.getCallbackUrl()).isNull();
}
Also used : OAuthToken(org.springframework.social.oauth1.OAuthToken) OAuth1Parameters(org.springframework.social.oauth1.OAuth1Parameters) OAuth1Operations(org.springframework.social.oauth1.OAuth1Operations) Test(org.junit.Test)

Example 4 with OAuth1Operations

use of org.springframework.social.oauth1.OAuth1Operations in project syndesis by syndesisio.

the class CredentialsTest method shouldAcquireOAuth1Credentials.

@Test
public void shouldAcquireOAuth1Credentials() {
    final OAuth1ConnectionFactory<?> oauth1 = mock(OAuth1ConnectionFactory.class);
    @SuppressWarnings("unchecked") final Applicator<OAuthToken> applicator = mock(Applicator.class);
    when(locator.providerWithId("providerId")).thenReturn(new OAuth1CredentialProvider<>("providerId", oauth1, applicator));
    final OAuth1Operations operations = mock(OAuth1Operations.class);
    when(oauth1.getOAuthOperations()).thenReturn(operations);
    when(operations.getVersion()).thenReturn(OAuth1Version.CORE_10);
    final OAuthToken token = new OAuthToken("value", "secret");
    when(operations.fetchRequestToken(null, null)).thenReturn(token);
    final ArgumentCaptor<OAuth1Parameters> parameters = ArgumentCaptor.forClass(OAuth1Parameters.class);
    when(operations.buildAuthorizeUrl(eq("value"), parameters.capture())).thenReturn("https://provider.io/oauth/authorize");
    final AcquisitionFlow acquisition = credentials.acquire("providerId", URI.create("https://syndesis.io/api/v1/"), URI.create("/ui#state"));
    final CredentialFlowState expectedFlowState = new OAuth1CredentialFlowState.Builder().providerId("providerId").redirectUrl("https://provider.io/oauth/authorize").returnUrl(URI.create("/ui#state")).token(token).build();
    final AcquisitionFlow expected = new AcquisitionFlow.Builder().type(Type.OAUTH1).redirectUrl("https://provider.io/oauth/authorize").state(expectedFlowState).build();
    assertThat(acquisition).isEqualToIgnoringGivenFields(expected, "state");
    final Optional<CredentialFlowState> maybeState = acquisition.state();
    assertThat(maybeState).isPresent();
    final CredentialFlowState state = maybeState.get();
    assertThat(state).isEqualToIgnoringGivenFields(expectedFlowState, "key");
    assertThat(state.getKey()).isNotNull();
    final OAuth1Parameters oAuth1Parameters = parameters.getValue();
    assertThat(oAuth1Parameters.getCallbackUrl()).isEqualTo("https://syndesis.io/api/v1/credentials/callback");
}
Also used : OAuthToken(org.springframework.social.oauth1.OAuthToken) OAuth1Parameters(org.springframework.social.oauth1.OAuth1Parameters) OAuth1Operations(org.springframework.social.oauth1.OAuth1Operations) Test(org.junit.Test)

Aggregations

OAuth1Operations (org.springframework.social.oauth1.OAuth1Operations)4 OAuthToken (org.springframework.social.oauth1.OAuthToken)4 Test (org.junit.Test)3 OAuth1Parameters (org.springframework.social.oauth1.OAuth1Parameters)3 AuthorizedRequestToken (org.springframework.social.oauth1.AuthorizedRequestToken)1 OAuth1Version (org.springframework.social.oauth1.OAuth1Version)1 MultiValueMap (org.springframework.util.MultiValueMap)1