package com.github.scribejava.core.extractors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import com.github.scribejava.core.exceptions.OAuthParametersMissingException; import com.github.scribejava.core.model.OAuthRequest; import com.github.scribejava.core.model.Verb; import com.github.scribejava.core.ObjectMother; public class HeaderExtractorTest { private HeaderExtractorImpl extractor; private OAuthRequest request; @Before public void setUp() { request = ObjectMother.createSampleOAuthRequest(); extractor = new HeaderExtractorImpl(); } @Test public void shouldExtractStandardHeader() { final String header = extractor.extract(request); final String oauth = "OAuth "; final String callback = "oauth_callback=\"http%3A%2F%2Fexample%2Fcallback\""; final String signature = "oauth_signature=\"OAuth-Signature\""; final String key = "oauth_consumer_key=\"AS%23%24%5E%2A%40%26\""; final String timestamp = "oauth_timestamp=\"123456\""; assertTrue(header.startsWith(oauth)); assertTrue(header.contains(callback)); assertTrue(header.contains(signature)); assertTrue(header.contains(key)); assertTrue(header.contains(timestamp)); // Assert that header only contains the checked elements above and nothing else assertEquals(", , , ", header.replaceFirst(oauth, "") .replaceFirst(callback, "") .replaceFirst(signature, "") .replaceFirst(key, "") .replaceFirst(timestamp, "")); } @Test(expected = IllegalArgumentException.class) public void shouldExceptionIfRequestIsNull() { extractor.extract(null); } @Test(expected = OAuthParametersMissingException.class) public void shouldExceptionIfRequestHasNoOAuthParams() { final OAuthRequest emptyRequest = new OAuthRequest(Verb.GET, "http://example.com"); extractor.extract(emptyRequest); } }