Skip to content

Instantly share code, notes, and snippets.

@danhyun
Last active August 29, 2015 14:06
Show Gist options
  • Select an option

  • Save danhyun/686dcb6852ee4ac4783e to your computer and use it in GitHub Desktop.

Select an option

Save danhyun/686dcb6852ee4ac4783e to your computer and use it in GitHub Desktop.
package com.ahalife.controller.system
import com.ahalife.service.WebClientService
import org.springframework.mock.web.MockHttpServletRequest
import org.springframework.mock.web.MockHttpServletResponse
import spock.lang.Specification
import spock.lang.Unroll
import javax.servlet.FilterChain
class CrawlFilterSpec extends Specification {
CrawlFilter crawlFilter = new CrawlFilter()
MockHttpServletRequest request
MockHttpServletResponse response
FilterChain chain
def setup() {
request = new MockHttpServletRequest('GET', '/')
response = new MockHttpServletResponse()
chain = Mock(FilterChain)
}
@Unroll("queryString #queryString should set downloadUrl #expectedUrl")
def "CrawlFilter correctly filters bots"() {
given:
request.queryString = queryString
def receivedUrl
crawlFilter.webClientService = Mock(WebClientService) {
getPage(_, _) >> { args -> receivedUrl = args[0] }
}
boolean doFilter = false
chain.doFilter(_, _) >> { doFilter = true }
when: "crawl filter is invoked"
crawlFilter.doFilter(request, response, chain)
then:
doFilter == doFilterCalled
(doFilterCalled ? 0 : 1) * crawlFilter.webClientService.getPage(_, _)
where:
queryString | doFilterCalled | expectedUrl
null | true | null
'_escaped_fragment_=' | false | 'http://localhost:80/?seoFragment=true'
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment