1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/*
2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project
3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License");
5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License.
6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at
7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *      http://www.apache.org/licenses/LICENSE-2.0
9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru *
10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software
11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS,
12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and
14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License.
15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */
16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley.toolbox;
18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.NetworkResponse;
20d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Request;
21d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Response;
22d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.mock.MockHttpStack;
23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
24d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.ProtocolVersion;
25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.entity.StringEntity;
26d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport org.apache.http.message.BasicHttpResponse;
27d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
28b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.After;
29b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.Before;
30b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.Test;
31b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.runner.RunWith;
32b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.robolectric.RobolectricTestRunner;
33b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick
34b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport static org.junit.Assert.*;
35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.util.HashMap;
37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.util.Map;
38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
39b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick@RunWith(RobolectricTestRunner.class)
40b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickpublic class BasicNetworkTest {
41d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
42b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick    @Test public void headersAndPostParams() throws Exception {
43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        MockHttpStack mockHttpStack = new MockHttpStack();
44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        BasicHttpResponse fakeResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1),
45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                200, "OK");
46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        fakeResponse.setEntity(new StringEntity("foobar"));
47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mockHttpStack.setResponseToReturn(fakeResponse);
48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
4935d5cc345a7bc5c7391aeda3d3fce711c6376c7bFicus Kirkpatrick        Request<String> request = new Request<String>(Request.Method.GET, "http://foo", null) {
50d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
51d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            protected Response<String> parseNetworkResponse(NetworkResponse response) {
53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return null;
54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            protected void deliverResponse(String response) {
58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            public Map<String, String> getHeaders() {
62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                Map<String, String> result = new HashMap<String, String>();
63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                result.put("requestheader", "foo");
64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return result;
65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
6835d5cc345a7bc5c7391aeda3d3fce711c6376c7bFicus Kirkpatrick            public Map<String, String> getParams() {
69d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                Map<String, String> result = new HashMap<String, String>();
70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                result.put("requestpost", "foo");
71d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return result;
72d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
73d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        };
74d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        httpNetwork.performRequest(request);
75d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        assertEquals("foo", mockHttpStack.getLastHeaders().get("requestheader"));
76d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        assertEquals("requestpost=foo&", new String(mockHttpStack.getLastPostBody()));
77d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
78d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru}
79