package com.box.sdk;
import static java.net.URLEncoder.encode;
import java.io.UnsupportedEncodingException;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import com.github.tomakehurst.wiremock.client.WireMock;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
public class BoxSearchTest {
@Rule
public final WireMockRule wireMockRule = new WireMockRule(8080);
@Test
@Category(UnitTest.class)
public void searchWithQueryRequestsCorrectFields() {
String query = "A query";
BoxAPIConnection api = new BoxAPIConnection("");
api.setBaseURL("http://localhost:8080/");
try {
stubFor(get(urlPathEqualTo("/search"))
.withQueryParam("query", WireMock.equalTo(encode(query, "UTF-8")))
.withQueryParam("limit", WireMock.equalTo("10"))
.withQueryParam("offset", WireMock.equalTo("10"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/json")
.withBody("{\"total_count\": 1, \"offset\": 10, \"limit\": 10, \"entries\":"
+ "[{\"type\": \"file\", \"id\": \"0\"}]}")));
} catch (UnsupportedEncodingException e) { /* no op */ }
BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery(query);
PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(10, 10, searchParams);
assertThat(searchResults.size(), is(1));
}
@Test
@Category(UnitTest.class)
public void searchWithMetadataRequestsCorrectFiltersAndFields() {
final String filters = "%5B%7B%22templateKey%22%3A%22test%22%2C%22scope%22%3A%22enterprise%22%2C%22"
+ "filters%22%3A%7B%22number%22%3A%7B%22gt%22%3A12%2C%22lt%22%3A19%7D%2C%22test%22%3A%22"
+ "example%22%7D%7D%5D";
BoxAPIConnection api = new BoxAPIConnection("");
api.setBaseURL("http://localhost:8080/");
stubFor(get(urlPathEqualTo("/search"))
.withQueryParam("type", WireMock.equalTo("file"))
.withQueryParam("mdfilters", WireMock.equalTo(filters))
.withQueryParam("limit", WireMock.equalTo("10"))
.withQueryParam("offset", WireMock.equalTo("10"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/json")
.withBody("{\"total_count\": 1, \"offset\": 10, \"limit\": 10, \"entries\":"
+ "[{\"type\": \"file\", \"id\": \"0\"}]}")));
BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setType("file");
BoxMetadataFilter metadataFilter = new BoxMetadataFilter();
metadataFilter.setScope("enterprise");
metadataFilter.setTemplateKey("test");
SizeRange sizeRange = new SizeRange(12, 19);
metadataFilter.addNumberRangeFilter("number", sizeRange);
metadataFilter.addFilter("test", "example");
searchParams.setMetadataFilter(metadataFilter);
PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(10, 10, searchParams);
assertThat(searchResults.size(), is(1));
}
}