This is an automated email from the git hooks/post-receive script. mckinstry pushed a commit to branch debian/master in repository rest-gradle-plugin.
commit b9b8685ff79fe37dc2b27a4ca9d65185d56f2d0a Author: noamt <n...@10ne.org> Date: Tue Jun 25 18:23:15 2013 +0300 Added support for preemptive authentication --- .../groovy/org/_10ne/gradle/rest/RestTask.groovy | 8 +++- .../org/_10ne/gradle/rest/RestTaskSpec.groovy | 46 +++++++++++++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy b/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy index 55c5dec..f5f76e9 100644 --- a/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy +++ b/src/main/groovy/org/_10ne/gradle/rest/RestTask.groovy @@ -19,6 +19,7 @@ package org._10ne.gradle.rest import groovyx.net.http.HttpResponseDecorator import groovyx.net.http.RESTClient import org.apache.commons.lang.StringUtils +import org.apache.http.HttpHeaders import org.gradle.api.DefaultTask import org.gradle.api.InvalidUserDataException import org.gradle.api.tasks.Input @@ -30,11 +31,13 @@ import org.gradle.api.tasks.TaskAction */ class RestTask extends DefaultTask { - def client + RESTClient client @Input String httpMethod @Input Object uri @Input + @Optional boolean preemptiveAuth + @Input @Optional String username @Input @Optional String password @@ -58,6 +61,9 @@ class RestTask extends DefaultTask { client.uri = uri if (StringUtils.isNotBlank(username)) { + if (preemptiveAuth) { + client.headers[HttpHeaders.AUTHORIZATION] = "$username:$password".toString().bytes.encodeBase64() + } client.auth.basic(username, password) } diff --git a/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy b/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy index cf40d0d..29d4a24 100644 --- a/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy +++ b/src/test/groovy/org/_10ne/gradle/rest/RestTaskSpec.groovy @@ -3,6 +3,7 @@ package org._10ne.gradle.rest import groovyx.net.http.AuthConfig import groovyx.net.http.HttpResponseDecorator import groovyx.net.http.RESTClient +import org.apache.http.HttpHeaders import org.gradle.api.InvalidUserDataException import org.gradle.api.Project import org.gradle.api.Task @@ -22,7 +23,7 @@ class RestTaskSpec extends Specification { def 'Execute a request with no URI'() { setup: - Task task = project.tasks.add(name: 'noUri', type: RestTask) {} + Task task = project.tasks.create(name: 'noUri', type: RestTask) {} when: task.executeRequest() @@ -33,7 +34,7 @@ class RestTaskSpec extends Specification { def 'Configure and execute a request'() { setup: - Task task = project.tasks.add(name: 'request', type: RestTask) { + Task task = project.tasks.create(name: 'request', type: RestTask) { httpMethod = 'post' uri = 'bob.com' username = 'username' @@ -64,4 +65,45 @@ class RestTaskSpec extends Specification { } 1 * mockResponse.getData() >> { 'somedata' } } + + def 'Configure and execute a preemptive authentication request'() { + setup: + Task task = project.tasks.create(name: 'request', type: RestTask) { + httpMethod = 'post' + uri = 'bob.com' + preemptiveAuth = true + username = 'username' + password = 'password' + requestContentType = 'requestContentType' + requestBody = 'requestBody' + contentType = 'contentType' + } + def mockClient = Mock(RESTClient) + task.client = mockClient + + def mockAuth = Mock(AuthConfig) + + def mockResponse = Mock(HttpResponseDecorator) + + def headers = [:] + + when: + task.executeRequest() + + and: + headers[HttpHeaders.AUTHORIZATION] == 'dXNlcm5hbWU6cGFzc3dvcmQ=' + + then: + 1 * mockClient.setUri('bob.com') + 1 * mockClient.getHeaders() >> { headers } + 1 * mockClient.getAuth() >> { mockAuth } + 1 * mockAuth.basic('username', 'password') + 1 * mockClient.post(_ as Map) >> { Map params -> + assert params.body == 'requestBody' + assert params.contentType == 'contentType' + assert params.requestContentType == 'requestContentType' + mockResponse + } + 1 * mockResponse.getData() >> { 'somedata' } + } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/rest-gradle-plugin.git _______________________________________________ pkg-java-commits mailing list pkg-java-comm...@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits