Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: chrome/browser/local_discovery/privet_http_unittest.cc

Issue 208583007: Tunnel the CDD from the Print Preview javascript to the privet operation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/json/json_reader.h"
7 #include "base/json/json_writer.h"
6 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
7 #include "chrome/browser/local_discovery/privet_http_impl.h" 9 #include "chrome/browser/local_discovery/privet_http_impl.h"
8 #include "net/base/host_port_pair.h" 10 #include "net/base/host_port_pair.h"
9 #include "net/base/net_errors.h" 11 #include "net/base/net_errors.h"
10 #include "net/url_request/test_url_fetcher_factory.h" 12 #include "net/url_request/test_url_fetcher_factory.h"
11 #include "net/url_request/url_request_test_util.h" 13 #include "net/url_request/url_request_test_util.h"
12 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 using testing::StrictMock; 17 using testing::StrictMock;
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 "}"; 180 "}";
179 181
180 const char kSampleInvalidDocumentTypeResponse[] = "{" 182 const char kSampleInvalidDocumentTypeResponse[] = "{"
181 "\"error\" : \"invalid_document_type\"" 183 "\"error\" : \"invalid_document_type\""
182 "}"; 184 "}";
183 185
184 const char kSampleCreatejobResponse[] = "{ \"job_id\": \"1234\" }"; 186 const char kSampleCreatejobResponse[] = "{ \"job_id\": \"1234\" }";
185 187
186 const char kSampleEmptyJSONResponse[] = "{}"; 188 const char kSampleEmptyJSONResponse[] = "{}";
187 189
190 const char kSampleCDD[] = "{ \"version\" : \"1.0\" }";
191
192 // Return the representation of the given JSON that would be outputted by
193 // JSONWriter. This ensures the same JSON values are represented by the same
194 // string.
195 std::string NormalizeJson(const std::string& json) {
196 std::string result = json;
197 scoped_ptr<base::Value> value(base::JSONReader::Read(result));
198 DCHECK(value);
199 base::JSONWriter::Write(value.get(), &result);
200 return result;
201 }
202
188 class MockTestURLFetcherFactoryDelegate 203 class MockTestURLFetcherFactoryDelegate
189 : public net::TestURLFetcher::DelegateForTests { 204 : public net::TestURLFetcher::DelegateForTests {
190 public: 205 public:
191 // Callback issued correspondingly to the call to the |Start()| method. 206 // Callback issued correspondingly to the call to the |Start()| method.
192 MOCK_METHOD1(OnRequestStart, void(int fetcher_id)); 207 MOCK_METHOD1(OnRequestStart, void(int fetcher_id));
193 208
194 // Callback issued correspondingly to the call to |AppendChunkToUpload|. 209 // Callback issued correspondingly to the call to |AppendChunkToUpload|.
195 // Uploaded chunks can be retrieved with the |upload_chunks()| getter. 210 // Uploaded chunks can be retrieved with the |upload_chunks()| getter.
196 MOCK_METHOD1(OnChunkUpload, void(int fetcher_id)); 211 MOCK_METHOD1(OnChunkUpload, void(int fetcher_id));
197 212
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 EXPECT_EQ(url, fetcher->GetOriginalURL()); 256 EXPECT_EQ(url, fetcher->GetOriginalURL());
242 257
243 if (!fetcher) return false; 258 if (!fetcher) return false;
244 259
245 EXPECT_EQ(data, fetcher->upload_data()); 260 EXPECT_EQ(data, fetcher->upload_data());
246 if (data != fetcher->upload_data()) return false; 261 if (data != fetcher->upload_data()) return false;
247 262
248 return SuccessfulResponseToURL(url, response); 263 return SuccessfulResponseToURL(url, response);
249 } 264 }
250 265
266 bool SuccessfulResponseToURLAndJSONData(const GURL& url,
267 const std::string& data,
268 const std::string& response) {
269 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
270 EXPECT_TRUE(fetcher);
271 EXPECT_EQ(url, fetcher->GetOriginalURL());
272
273 if (!fetcher)
274 return false;
275
276 std::string normalized_data = NormalizeJson(data);
277 std::string normalized_upload_data = NormalizeJson(fetcher->upload_data());
278 EXPECT_EQ(normalized_data, normalized_upload_data);
279 if (normalized_data != normalized_upload_data)
280 return false;
281
282 return SuccessfulResponseToURL(url, response);
283 }
284
251 bool SuccessfulResponseToURLAndFilePath(const GURL& url, 285 bool SuccessfulResponseToURLAndFilePath(const GURL& url,
252 const base::FilePath& file_path, 286 const base::FilePath& file_path,
253 const std::string& response) { 287 const std::string& response) {
254 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); 288 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
255 EXPECT_TRUE(fetcher); 289 EXPECT_TRUE(fetcher);
256 EXPECT_EQ(url, fetcher->GetOriginalURL()); 290 EXPECT_EQ(url, fetcher->GetOriginalURL());
257 291
258 if (!fetcher) return false; 292 if (!fetcher) return false;
259 293
260 EXPECT_EQ(file_path, fetcher->upload_file_path()); 294 EXPECT_EQ(file_path, fetcher->upload_file_path());
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?" 876 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?"
843 "client_name=Chrome&user_name=sample%40gmail.com" 877 "client_name=Chrome&user_name=sample%40gmail.com"
844 "&job_name=Sample+job+name"), 878 "&job_name=Sample+job+name"),
845 base::FilePath(FILE_PATH_LITERAL("path/to/test.pdf")), 879 base::FilePath(FILE_PATH_LITERAL("path/to/test.pdf")),
846 kSampleLocalPrintResponse)); 880 kSampleLocalPrintResponse));
847 }; 881 };
848 882
849 TEST_F(PrivetLocalPrintTest, SuccessfulLocalPrintWithCreatejob) { 883 TEST_F(PrivetLocalPrintTest, SuccessfulLocalPrintWithCreatejob) {
850 local_print_operation_->SetUsername("sample@gmail.com"); 884 local_print_operation_->SetUsername("sample@gmail.com");
851 local_print_operation_->SetJobname("Sample job name"); 885 local_print_operation_->SetJobname("Sample job name");
852 local_print_operation_->SetTicket("Sample print ticket"); 886 local_print_operation_->SetTicket(kSampleCDD);
853 local_print_operation_->SetData( 887 local_print_operation_->SetData(
854 RefCountedBytesFromString("Sample print data")); 888 RefCountedBytesFromString("Sample print data"));
855 local_print_operation_->Start(); 889 local_print_operation_->Start();
856 890
857 EXPECT_TRUE(SuccessfulResponseToURL( 891 EXPECT_TRUE(SuccessfulResponseToURL(
858 GURL("http://10.0.0.8:6006/privet/info"), 892 GURL("http://10.0.0.8:6006/privet/info"),
859 kSampleInfoResponseWithCreatejob)); 893 kSampleInfoResponseWithCreatejob));
860 894
861 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"), 895 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"),
862 kSampleInfoResponse)); 896 kSampleInfoResponse));
863 897
864 EXPECT_TRUE( 898 EXPECT_TRUE(
865 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"), 899 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"),
866 kSampleCapabilitiesResponse)); 900 kSampleCapabilitiesResponse));
867 901
868 EXPECT_TRUE(SuccessfulResponseToURLAndData( 902 EXPECT_TRUE(SuccessfulResponseToURLAndJSONData(
869 GURL("http://10.0.0.8:6006/privet/printer/createjob"), 903 GURL("http://10.0.0.8:6006/privet/printer/createjob"),
870 "Sample print ticket", 904 kSampleCDD,
871 kSampleCreatejobResponse)); 905 kSampleCreatejobResponse));
872 906
873 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal()); 907 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
874 908
875 // TODO(noamsml): Is encoding spaces as pluses standard? 909 // TODO(noamsml): Is encoding spaces as pluses standard?
876 EXPECT_TRUE(SuccessfulResponseToURLAndData( 910 EXPECT_TRUE(SuccessfulResponseToURLAndData(
877 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?" 911 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?"
878 "client_name=Chrome&user_name=sample%40gmail.com&" 912 "client_name=Chrome&user_name=sample%40gmail.com&"
879 "job_name=Sample+job+name&job_id=1234"), 913 "job_name=Sample+job+name&job_id=1234"),
880 "Sample print data", 914 "Sample print data",
881 kSampleLocalPrintResponse)); 915 kSampleLocalPrintResponse));
882 }; 916 };
883 917
884 TEST_F(PrivetLocalPrintTest, SuccessfulLocalPrintWithOverlongName) { 918 TEST_F(PrivetLocalPrintTest, SuccessfulLocalPrintWithOverlongName) {
885 local_print_operation_->SetUsername("sample@gmail.com"); 919 local_print_operation_->SetUsername("sample@gmail.com");
886 local_print_operation_->SetJobname( 920 local_print_operation_->SetJobname(
887 "123456789:123456789:123456789:123456789:123456789:123456789:123456789:"); 921 "123456789:123456789:123456789:123456789:123456789:123456789:123456789:");
888 local_print_operation_->SetTicket("Sample print ticket"); 922 local_print_operation_->SetTicket(kSampleCDD);
889 local_print_operation_->SetData( 923 local_print_operation_->SetData(
890 RefCountedBytesFromString("Sample print data")); 924 RefCountedBytesFromString("Sample print data"));
891 local_print_operation_->Start(); 925 local_print_operation_->Start();
892 926
893 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"), 927 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"),
894 kSampleInfoResponseWithCreatejob)); 928 kSampleInfoResponseWithCreatejob));
895 929
896 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"), 930 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"),
897 kSampleInfoResponse)); 931 kSampleInfoResponse));
898 932
899 EXPECT_TRUE( 933 EXPECT_TRUE(
900 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"), 934 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"),
901 kSampleCapabilitiesResponse)); 935 kSampleCapabilitiesResponse));
902 936
903 EXPECT_TRUE(SuccessfulResponseToURLAndData( 937 EXPECT_TRUE(SuccessfulResponseToURLAndJSONData(
904 GURL("http://10.0.0.8:6006/privet/printer/createjob"), 938 GURL("http://10.0.0.8:6006/privet/printer/createjob"),
905 "Sample print ticket", 939 kSampleCDD,
906 kSampleCreatejobResponse)); 940 kSampleCreatejobResponse));
907 941
908 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal()); 942 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
909 943
910 // TODO(noamsml): Is encoding spaces as pluses standard? 944 // TODO(noamsml): Is encoding spaces as pluses standard?
911 EXPECT_TRUE(SuccessfulResponseToURLAndData( 945 EXPECT_TRUE(SuccessfulResponseToURLAndData(
912 GURL( 946 GURL(
913 "http://10.0.0.8:6006/privet/printer/submitdoc?" 947 "http://10.0.0.8:6006/privet/printer/submitdoc?"
914 "client_name=Chrome&user_name=sample%40gmail.com&" 948 "client_name=Chrome&user_name=sample%40gmail.com&"
915 "job_name=123456789%3A123456789%3A123456789%3A1...123456789" 949 "job_name=123456789%3A123456789%3A123456789%3A1...123456789"
916 "%3A123456789%3A123456789%3A&job_id=1234"), 950 "%3A123456789%3A123456789%3A&job_id=1234"),
917 "Sample print data", 951 "Sample print data",
918 kSampleLocalPrintResponse)); 952 kSampleLocalPrintResponse));
919 }; 953 };
920 954
921 TEST_F(PrivetLocalPrintTest, PDFPrintInvalidDocumentTypeRetry) { 955 TEST_F(PrivetLocalPrintTest, PDFPrintInvalidDocumentTypeRetry) {
922 local_print_operation_->SetUsername("sample@gmail.com"); 956 local_print_operation_->SetUsername("sample@gmail.com");
923 local_print_operation_->SetJobname("Sample job name"); 957 local_print_operation_->SetJobname("Sample job name");
924 local_print_operation_->SetTicket("Sample print ticket"); 958 local_print_operation_->SetTicket(kSampleCDD);
925 local_print_operation_->SetData( 959 local_print_operation_->SetData(
926 RefCountedBytesFromString("sample/path/")); 960 RefCountedBytesFromString("sample/path/"));
927 local_print_operation_->Start(); 961 local_print_operation_->Start();
928 962
929 EXPECT_TRUE(SuccessfulResponseToURL( 963 EXPECT_TRUE(SuccessfulResponseToURL(
930 GURL("http://10.0.0.8:6006/privet/info"), 964 GURL("http://10.0.0.8:6006/privet/info"),
931 kSampleInfoResponseWithCreatejob)); 965 kSampleInfoResponseWithCreatejob));
932 966
933 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"), 967 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"),
934 kSampleInfoResponse)); 968 kSampleInfoResponse));
935 969
936 EXPECT_TRUE( 970 EXPECT_TRUE(
937 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"), 971 SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/capabilities"),
938 kSampleCapabilitiesResponse)); 972 kSampleCapabilitiesResponse));
939 973
940 EXPECT_TRUE(SuccessfulResponseToURLAndData( 974 EXPECT_TRUE(SuccessfulResponseToURLAndJSONData(
941 GURL("http://10.0.0.8:6006/privet/printer/createjob"), 975 GURL("http://10.0.0.8:6006/privet/printer/createjob"),
942 "Sample print ticket", 976 kSampleCDD,
943 kSampleCreatejobResponse)); 977 kSampleCreatejobResponse));
944 978
945 // TODO(noamsml): Is encoding spaces as pluses standard? 979 // TODO(noamsml): Is encoding spaces as pluses standard?
946 EXPECT_TRUE(SuccessfulResponseToURLAndData( 980 EXPECT_TRUE(SuccessfulResponseToURLAndData(
947 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?" 981 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?"
948 "client_name=Chrome&user_name=sample%40gmail.com&" 982 "client_name=Chrome&user_name=sample%40gmail.com&"
949 "job_name=Sample+job+name&job_id=1234"), 983 "job_name=Sample+job+name&job_id=1234"),
950 "sample/path/", 984 "sample/path/",
951 kSampleInvalidDocumentTypeResponse)); 985 kSampleInvalidDocumentTypeResponse));
952 986
953 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal()); 987 EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
954 988
955 EXPECT_TRUE(SuccessfulResponseToURLAndFilePath( 989 EXPECT_TRUE(SuccessfulResponseToURLAndFilePath(
956 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?" 990 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?"
957 "client_name=Chrome&user_name=sample%40gmail.com&" 991 "client_name=Chrome&user_name=sample%40gmail.com&"
958 "job_name=Sample+job+name&job_id=1234"), 992 "job_name=Sample+job+name&job_id=1234"),
959 base::FilePath(FILE_PATH_LITERAL("sample/path/test.pdf")), 993 base::FilePath(FILE_PATH_LITERAL("sample/path/test.pdf")),
960 kSampleLocalPrintResponse)); 994 kSampleLocalPrintResponse));
961 }; 995 };
962 996
963 TEST_F(PrivetLocalPrintTest, LocalPrintRetryOnInvalidJobID) { 997 TEST_F(PrivetLocalPrintTest, LocalPrintRetryOnInvalidJobID) {
964 local_print_operation_->SetUsername("sample@gmail.com"); 998 local_print_operation_->SetUsername("sample@gmail.com");
965 local_print_operation_->SetJobname("Sample job name"); 999 local_print_operation_->SetJobname("Sample job name");
966 local_print_operation_->SetTicket("Sample print ticket"); 1000 local_print_operation_->SetTicket(kSampleCDD);
967 local_print_operation_->SetData( 1001 local_print_operation_->SetData(
968 RefCountedBytesFromString("Sample print data")); 1002 RefCountedBytesFromString("Sample print data"));
969 local_print_operation_->Start(); 1003 local_print_operation_->Start();
970 1004
971 EXPECT_TRUE(SuccessfulResponseToURL( 1005 EXPECT_TRUE(SuccessfulResponseToURL(
972 GURL("http://10.0.0.8:6006/privet/info"), 1006 GURL("http://10.0.0.8:6006/privet/info"),
973 kSampleInfoResponseWithCreatejob)); 1007 kSampleInfoResponseWithCreatejob));
974 1008
975 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"), 1009 EXPECT_TRUE(SuccessfulResponseToURL(GURL("http://10.0.0.8:6006/privet/info"),
976 kSampleInfoResponse)); 1010 kSampleInfoResponse));
977 1011
978 EXPECT_TRUE(SuccessfulResponseToURL( 1012 EXPECT_TRUE(SuccessfulResponseToURL(
979 GURL("http://10.0.0.8:6006/privet/capabilities"), 1013 GURL("http://10.0.0.8:6006/privet/capabilities"),
980 kSampleCapabilitiesResponse)); 1014 kSampleCapabilitiesResponse));
981 1015
982 EXPECT_TRUE(SuccessfulResponseToURLAndData( 1016 EXPECT_TRUE(SuccessfulResponseToURLAndJSONData(
983 GURL("http://10.0.0.8:6006/privet/printer/createjob"), 1017 GURL("http://10.0.0.8:6006/privet/printer/createjob"),
984 "Sample print ticket", 1018 kSampleCDD,
985 kSampleCreatejobResponse)); 1019 kSampleCreatejobResponse));
986 1020
987 EXPECT_TRUE(SuccessfulResponseToURLAndData( 1021 EXPECT_TRUE(SuccessfulResponseToURLAndData(
988 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?" 1022 GURL("http://10.0.0.8:6006/privet/printer/submitdoc?"
989 "client_name=Chrome&user_name=sample%40gmail.com&" 1023 "client_name=Chrome&user_name=sample%40gmail.com&"
990 "job_name=Sample+job+name&job_id=1234"), 1024 "job_name=Sample+job+name&job_id=1234"),
991 "Sample print data", 1025 "Sample print data",
992 kSampleErrorResponsePrinterBusy)); 1026 kSampleErrorResponsePrinterBusy));
993 1027
994 RunFor(base::TimeDelta::FromSeconds(3)); 1028 RunFor(base::TimeDelta::FromSeconds(3));
995 1029
996 EXPECT_TRUE(SuccessfulResponseToURL( 1030 EXPECT_TRUE(SuccessfulResponseToURL(
997 GURL("http://10.0.0.8:6006/privet/printer/createjob"), 1031 GURL("http://10.0.0.8:6006/privet/printer/createjob"),
998 kSampleCreatejobResponse)); 1032 kSampleCreatejobResponse));
999 }; 1033 };
1000 1034
1001 1035
1002 } // namespace 1036 } // namespace
1003 1037
1004 } // namespace local_discovery 1038 } // namespace local_discovery
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698