Index: rlz/win/lib/machine_deal_test.cc |
=================================================================== |
--- rlz/win/lib/machine_deal_test.cc (revision 0) |
+++ rlz/win/lib/machine_deal_test.cc (revision 0) |
@@ -0,0 +1,156 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// A test application for the MachineDealCode class. |
+// |
+// These tests should not be executed on the build server: |
+// - They assert for the failed cases. |
+// - They modify machine state (registry). |
+// |
+// These tests require write access to HKLM and HKCU, unless |
+// rlz_lib::CreateMachineState() has been successfully called. |
+ |
+#include "base/logging.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+#include "rlz/test/rlz_test_helpers.h" |
+#include "rlz/win/lib/machine_deal.h" |
+ |
+class MachineDealCodeHelper : public rlz_lib::MachineDealCode { |
+ public: |
+ static bool Clear() { return rlz_lib::MachineDealCode::Clear(); } |
+ |
+ private: |
+ MachineDealCodeHelper() {} |
+ ~MachineDealCodeHelper() {} |
+}; |
+ |
+class MachineDealCodeTest : public RlzLibTestBase { |
+}; |
+ |
+TEST_F(MachineDealCodeTest, CreateMachineState) { |
+ EXPECT_TRUE(rlz_lib::CreateMachineState()); |
+} |
+ |
+TEST_F(MachineDealCodeTest, Set) { |
+ MachineDealCodeHelper::Clear(); |
+ char dcc_50[50]; |
+ dcc_50[0] = 0; |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value")); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("dcc_value", dcc_50); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value_2")); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("dcc_value_2", dcc_50); |
+} |
+ |
+TEST_F(MachineDealCodeTest, Get) { |
+ MachineDealCodeHelper::Clear(); |
+ char dcc_50[50], dcc_2[2]; |
+ dcc_50[0] = 0; |
+ dcc_2[0] = 0; |
+ |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value")); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("dcc_value", dcc_50); |
+ |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::Get(dcc_2, 2)); |
+} |
+ |
+TEST_F(MachineDealCodeTest, SetFromPingResponse) { |
+ rlz_lib::MachineDealCode::Set("MyDCCode"); |
+ char dcc_50[50]; |
+ |
+ // Bad responses |
+ |
+ char* kBadDccResponse = |
+ "dcc: NotMyDCCode \r\n" |
+ "set_dcc: NewDCCode\r\n" |
+ "crc32: 1B4D6BB3"; |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kBadDccResponse)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("MyDCCode", dcc_50); |
+ |
+ char* kBadCrcResponse = |
+ "dcc: MyDCCode \r\n" |
+ "set_dcc: NewDCCode\r\n" |
+ "crc32: 90707106"; |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kBadCrcResponse)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("MyDCCode", dcc_50); |
+ |
+ // Good responses |
+ |
+ char* kMissingSetResponse = |
+ "dcc: MyDCCode \r\n" |
+ "crc32: 35F2E717"; |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kMissingSetResponse)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("MyDCCode", dcc_50); |
+ |
+ char* kGoodResponse = |
+ "dcc: MyDCCode \r\n" |
+ "set_dcc: NewDCCode\r\n" |
+ "crc32: C8540E02"; |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kGoodResponse)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("NewDCCode", dcc_50); |
+ |
+ char* kGoodResponse2 = |
+ "set_dcc: NewDCCode2 \r\n" |
+ "dcc: NewDCCode \r\n" |
+ "crc32: 60B6409A"; |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kGoodResponse2)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("NewDCCode2", dcc_50); |
+ |
+ MachineDealCodeHelper::Clear(); |
+ char* kGoodResponse3 = |
+ "set_dcc: NewDCCode \r\n" |
+ "crc32: 374C1C47"; |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kGoodResponse3)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("NewDCCode", dcc_50); |
+ |
+ MachineDealCodeHelper::Clear(); |
+ char* kGoodResponse4 = |
+ "dcc: \r\n" |
+ "set_dcc: NewDCCode \r\n" |
+ "crc32: 0AB1FB39"; |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::SetFromPingResponse( |
+ kGoodResponse4)); |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Get(dcc_50, 50)); |
+ EXPECT_STREQ("NewDCCode", dcc_50); |
+} |
+ |
+TEST_F(MachineDealCodeTest, GetAsCgi) { |
+ MachineDealCodeHelper::Clear(); |
+ char cgi_50[50], cgi_2[2]; |
+ cgi_50[0] = 0; |
+ cgi_2[0] = 0; |
+ |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::GetAsCgi(cgi_50, 50)); |
+ EXPECT_STREQ("", cgi_50); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value")); |
+ |
+ EXPECT_TRUE(rlz_lib::MachineDealCode::GetAsCgi(cgi_50, 50)); |
+ EXPECT_STREQ("dcc=dcc_value", cgi_50); |
+ |
+ EXPECT_FALSE(rlz_lib::MachineDealCode::GetAsCgi(cgi_2, 2)); |
+} |