Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import groovyx.net.http.HTTPBuilder;
- import org.junit.runner.RunWith;
- import org.scribe.oauth.Scribe;
- import org.scribe.oauth.Token
- import spock.lang.Specification;
- import spock.lang.Sputnik;
- @RunWith(Sputnik)
- public class OAuthHttpBuilderTest extends Specification {
- HTTPBuilder delegate = Mock()
- Scribe signer
- Token tok
- OAuthHttpBuilder underTest
- def uri
- def setup() {
- Properties props = new Properties([ "consumer.key" : "myClientKey",
- "consumer.secret" : "myClientSecret" ])
- signer = new Scribe(props);
- tok = new Token("token_key", "token_secret")
- underTest = new OAuthHttpBuilder(delegate, signer)
- }
- def "Null token passes Scribe a token with empty token/secret"() {
- given:
- signer = Mock(Scribe)
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- when:
- underTest = new OAuthHttpBuilder(delegate, signer)
- underTest.get(query: null)
- then:
- 1 * signer.signRequest(_,_) >> { scribeReq, token ->
- assert token.token == ""
- assert token.secret == ""
- }
- }
- def "Signs and passes authorization header in GET method"() {
- given:
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- when:
- underTest.get(query: null, accessToken: tok)
- then:
- 1 * delegate.get(_) >> { args -> argsHaveAuthorizationString(args) }
- }
- def "Passes authorization header in GET method with default access token"() {
- given:
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- underTest.setAccessToken(tok)
- when:
- underTest.get(query: null)
- then:
- 1 * delegate.get(_) >> { args -> argsHaveAuthorizationString(args) }
- }
- def "Passes authorization header in POST method"() {
- given:
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- when:
- underTest.post(body: null, accessToken: tok)
- then:
- 1 * delegate.post(_) >> { args -> argsHaveAuthorizationString(args) }
- }
- def "Provides query params for GET requests"() {
- given:
- signer = Mock(Scribe)
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- def queryParams = [a: "b", c: "d"]
- when:
- underTest = new OAuthHttpBuilder(delegate, signer)
- underTest.get(query: queryParams, accessToken: tok)
- then:
- 1 * signer.signRequest(_,tok) >> { scribeReq, token ->
- def bodyParams = scribeReq.getBodyParams()
- assert bodyParams.size() == 2
- bodyParams.each { entry ->
- assert queryParams[entry.key] == entry.value
- }
- scribeReq.addHeader("Authorization", "sure you're authorized why not")
- }
- }
- def "Provides query params and body params for POST requests"() {
- given:
- signer = Mock(Scribe)
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- def queryParams = [a: "b", c: "d"]
- def bodyParams = [e: "f", g: "h"]
- when:
- underTest = new OAuthHttpBuilder(delegate, signer)
- underTest.post(query: queryParams, body: bodyParams, accessToken: tok)
- then:
- 1 * signer.signRequest(_,tok) >> { scribeReq, token ->
- def passedBodyParams = scribeReq.getBodyParams()
- assert passedBodyParams.size() == 4
- bodyParams.each { entry ->
- assert (queryParams[entry.key] == entry.value) ||
- (bodyParams[entry.key] == entry.value)
- }
- scribeReq.addHeader("Authorization", "sure you're authorized why not")
- }
- }
- def "Handles integer inputs fine"() {
- given:
- signer = Mock(Scribe)
- delegate.getUri() >> (uri = "http://localhost:8080/users/1")
- def queryParams = [aNumber: 1]
- underTest = new OAuthHttpBuilder(delegate, signer)
- when:
- underTest.get(query: queryParams, accessToken: tok)
- then:
- 1 * signer.signRequest(_, tok) >> { scribeReq, token ->
- def passedBodyParams = scribeReq.getBodyParams()
- assert passedBodyParams.size() == 1
- passedBodyParams.each { entry ->
- assert entry.value == "1"
- }
- }
- }
- /*
- * Private Methods
- */
- def argsHaveAuthorizationString(args) {
- assert args.headers.size() != 0
- assert args.headers.Authorization.size() == 1
- assert args.headers.Authorization[0] != null
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement