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
28d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.test.AndroidTestCase;
29d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.test.suitebuilder.annotation.SmallTest;
30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.util.HashMap;
32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.util.Map;
33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
34d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru@SmallTest
35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupublic class BasicNetworkTest extends AndroidTestCase {
36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    @Override
38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    protected void setUp() throws Exception {
39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        super.setUp();
40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mContext = getContext();
41d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
42d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    public void testHeadersAndPostParams() throws Exception {
44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        MockHttpStack mockHttpStack = new MockHttpStack();
45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        BasicHttpResponse fakeResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1),
46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                200, "OK");
47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        fakeResponse.setEntity(new StringEntity("foobar"));
48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        mockHttpStack.setResponseToReturn(fakeResponse);
49d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
5035d5cc345a7bc5c7391aeda3d3fce711c6376c7bFicus Kirkpatrick        Request<String> request = new Request<String>(Request.Method.GET, "http://foo", null) {
51d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            protected Response<String> parseNetworkResponse(NetworkResponse response) {
54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return null;
55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            protected void deliverResponse(String response) {
59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            public Map<String, String> getHeaders() {
63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                Map<String, String> result = new HashMap<String, String>();
64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                result.put("requestheader", "foo");
65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return result;
66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru
68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            @Override
6935d5cc345a7bc5c7391aeda3d3fce711c6376c7bFicus Kirkpatrick            public Map<String, String> getParams() {
70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                Map<String, String> result = new HashMap<String, String>();
71d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                result.put("requestpost", "foo");
72d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru                return result;
73d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru            }
74d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        };
75d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        httpNetwork.performRequest(request);
76d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        assertEquals("foo", mockHttpStack.getLastHeaders().get("requestheader"));
77d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru        assertEquals("requestpost=foo&", new String(mockHttpStack.getLastPostBody()));
78d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru    }
79d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru}
80