From f65c88d35c80d4bd3ee9d320bcb6c1a123d9ba4a Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Fri, 20 Mar 2015 11:21:42 -0700 Subject: [PATCH] Fix GetResponse() return type usage and log response data if error occurs. The return type of GetResponse() has been changed from int to bool a while back. Fix the return type in unit tests that were still expecting int as the return type. Also log the response message if there is an error in the http response. Merged from go/wvgerrit/13783. bug: 19822500 Change-Id: Ie52df0e19744a847690b788680f59915b0b6b534 --- .../cdm/test/cdm_extended_duration_test.cpp | 60 +++++++++------ .../cdm/test/request_license_test.cpp | 76 +++++++++++-------- 2 files changed, 78 insertions(+), 58 deletions(-) diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index 67a5a85b..4ba1dd9f 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -4,16 +4,17 @@ #include #include +#include + #include "clock.h" #include "config_test_env.h" #include "device_files.h" #include "file_store.h" -#include "license_request.h" #include "license_protocol.pb.h" +#include "license_request.h" #include "log.h" -#include "gtest/gtest.h" -#include "OEMCryptoCENC.h" #include "oemcrypto_adapter.h" +#include "OEMCryptoCENC.h" #include "properties.h" #include "string_conversions.h" #include "url_request.h" @@ -303,23 +304,30 @@ class WvCdmExtendedDurationTest : public testing::Test { &server_url)); } + void LogResponseError(const std::string& message, int http_status_code) { + LOGD("HTTP Status code = %d", http_status_code); + LOGD("HTTP response(%d): %s", message.size(), b2a_hex(message).c_str()); + } + // Post a request and extract the drm message from the response std::string GetKeyRequestResponse(const std::string& server_url, const std::string& client_auth) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url + client_auth); - if (!url_request.is_connected()) { - return ""; - } + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url << client_auth; url_request.PostRequest(key_msg_); std::string message; - int resp_bytes = url_request.GetResponse(&message); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); std::string drm_msg; - if (kHttpOk == status_code) { + if (kHttpOk == http_status_code) { LicenseRequest lic_request; lic_request.GetDrmMessage(message, drm_msg); LOGV("HTTP response body: (%u bytes)", drm_msg.size()); @@ -333,17 +341,17 @@ class WvCdmExtendedDurationTest : public testing::Test { std::string GetCertRequestResponse(const std::string& server_url) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url); - if (!url_request.is_connected()) { - return ""; - } - + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url; url_request.PostCertRequestInQueryString(key_msg_); std::string message; - int resp_bytes = url_request.GetResponse(&message); - LOGD("end %d bytes response dump", resp_bytes); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); return message; } @@ -354,18 +362,20 @@ class WvCdmExtendedDurationTest : public testing::Test { const std::string& usage_info_request) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url + client_auth); - if (!url_request.is_connected()) { - return ""; - } + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url << client_auth; url_request.PostRequest(usage_info_request); std::string message; - int resp_bytes = url_request.GetResponse(&message); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); std::string usage_info; - if (kHttpOk == status_code) { + if (kHttpOk == http_status_code) { LicenseRequest license; license.GetDrmMessage(message, usage_info); LOGV("HTTP response body: (%u bytes)", usage_info.size()); diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index c4d4b480..e4009093 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -4,18 +4,19 @@ #include #include +#include + #include "config_test_env.h" -#include "gtest/gtest.h" #include "device_files.h" #include "file_store.h" #include "license_request.h" #include "log.h" -#include "OEMCryptoCENC.h" #include "oemcrypto_adapter.h" +#include "OEMCryptoCENC.h" #include "properties.h" #include "string_conversions.h" -#include "url_request.h" #include "test_printers.h" +#include "url_request.h" #include "wv_cdm_constants.h" #include "wv_cdm_event_listener.h" #include "wv_content_decryption_module.h" @@ -526,23 +527,30 @@ class WvCdmRequestLicenseTest : public testing::Test { &server_url)); } + void LogResponseError(const std::string& message, int http_status_code) { + LOGD("HTTP Status code = %d", http_status_code); + LOGD("HTTP response(%d): %s", message.size(), b2a_hex(message).c_str()); + } + // Post a request and extract the drm message from the response std::string GetKeyRequestResponse(const std::string& server_url, const std::string& client_auth) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url + client_auth); - if (!url_request.is_connected()) { - return ""; - } + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url << client_auth; url_request.PostRequest(key_msg_); std::string message; - int resp_bytes = url_request.GetResponse(&message); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); std::string drm_msg; - if (kHttpOk == status_code) { + if (kHttpOk == http_status_code) { LicenseRequest lic_request; lic_request.GetDrmMessage(message, drm_msg); LOGV("HTTP response body: (%u bytes)", drm_msg.size()); @@ -555,17 +563,17 @@ class WvCdmRequestLicenseTest : public testing::Test { std::string GetCertRequestResponse(const std::string& server_url) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url); - if (!url_request.is_connected()) { - return ""; - } - + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url; url_request.PostCertRequestInQueryString(key_msg_); std::string message; - int resp_bytes = url_request.GetResponse(&message); - LOGD("end %d bytes response dump", resp_bytes); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); return message; } @@ -576,18 +584,20 @@ class WvCdmRequestLicenseTest : public testing::Test { const std::string& usage_info_request) { // Use secure connection and chunk transfer coding. UrlRequest url_request(server_url + client_auth); - if (!url_request.is_connected()) { - return ""; - } + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << server_url << client_auth; url_request.PostRequest(usage_info_request); std::string message; - int resp_bytes = url_request.GetResponse(&message); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); - EXPECT_EQ(kHttpOk, status_code); + int http_status_code = url_request.GetStatusCode(message); + if (kHttpOk != http_status_code) { + LogResponseError(message, http_status_code); + } + EXPECT_EQ(kHttpOk, http_status_code); std::string usage_info; - if (kHttpOk == status_code) { + if (kHttpOk == http_status_code) { LicenseRequest license; license.GetDrmMessage(message, usage_info); LOGV("HTTP response body: (%u bytes)", usage_info.size()); @@ -927,23 +937,23 @@ TEST_F(WvCdmRequestLicenseTest, WrongMessageTest) { // We should receive a response with no license, i.e. the extracted license // response message should be empty or an HTTP error UrlRequest url_request(g_license_server + g_client_auth); - if (!url_request.is_connected()) { - return; - } + EXPECT_TRUE(url_request.is_connected()) << "Fail to connect to " + << g_license_server << g_client_auth; url_request.PostRequest(key_msg_); std::string message; - int resp_bytes = url_request.GetResponse(&message); + EXPECT_TRUE(url_request.GetResponse(&message)); - int status_code = url_request.GetStatusCode(message); + int http_status_code = url_request.GetStatusCode(message); std::string drm_msg; - if (kHttpOk == status_code) { + if (kHttpOk == http_status_code) { LicenseRequest lic_request; lic_request.GetDrmMessage(message, drm_msg); LOGV("HTTP response body: (%u bytes)", drm_msg.size()); } EXPECT_TRUE(drm_msg.empty()); - EXPECT_TRUE(kHttpOk == status_code || kHttpBadRequest == status_code || - kHttpInternalServerError == status_code); + EXPECT_TRUE(kHttpOk == http_status_code || + kHttpBadRequest == http_status_code || + kHttpInternalServerError == http_status_code); decryptor_.CloseSession(session_id_); }