Index: chrome/browser/remoting/directory_add_request_unittest.cc |
diff --git a/chrome/browser/remoting/directory_add_request_unittest.cc b/chrome/browser/remoting/directory_add_request_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d30ffd57a2363f6e7d9ef76ca7779821fd973c19 |
--- /dev/null |
+++ b/chrome/browser/remoting/directory_add_request_unittest.cc |
@@ -0,0 +1,76 @@ |
+// Copyright (c) 2010 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. |
+ |
+#include "chrome/browser/remoting/directory_add_request.h" |
+#include "net/url_request/url_request_status.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace remoting { |
+ |
+namespace { |
+class MockDoneCallback { |
+ public: |
+ MOCK_METHOD2(OnDone, |
+ void(DirectoryAddRequest::Result, |
+ const std::string& message)); |
+}; |
+} // namespace |
+ |
+class DirectoryAddRequestTest : public testing::Test { |
+ protected: |
+ void TestResult(int response_code, const std::string& data, |
+ DirectoryAddRequest::Result expected_result, |
+ const std::string& expected_message) { |
+ MockDoneCallback callback; |
+ EXPECT_CALL(callback, OnDone(expected_result, expected_message)) |
+ .Times(1); |
+ |
+ target_.done_callback_.reset( |
+ NewCallback(&callback, &MockDoneCallback::OnDone)); |
+ |
+ GURL url; |
+ URLRequestStatus status_ok; |
+ ResponseCookies cookies; |
+ target_.OnURLFetchComplete(NULL, url, status_ok, response_code, |
+ cookies, data); |
+ } |
+ |
+ DirectoryAddRequest target_; |
+}; |
+ |
+TEST_F(DirectoryAddRequestTest, Success) { |
+ TestResult(200, "{\"data\":{\"kind\":\"chromoting#host\"," |
+ "\"hostId\":\"e64906c9-fdc9-4921-80cb-563cf7f564f3\"," |
+ "\"hostName\":\"host_name\",\"publicKey\":\"PUBLIC+KEY\"}}", |
+ DirectoryAddRequest::SUCCESS, ""); |
+} |
+ |
+TEST_F(DirectoryAddRequestTest, Duplicate) { |
+ TestResult(400, "{\"error\":{\"errors\":[{\"domain\":\"global\"," |
+ "\"reason\":\"invalid\",\"message\":\"Attempt to register " |
+ "a duplicate host.\"}],\"code\":400,\"message\":\"Attempt to " |
+ "register a duplicate host.\"}}", |
+ DirectoryAddRequest::ERROR_EXISTS, |
+ "Attempt to register a duplicate host."); |
+} |
+ |
+TEST_F(DirectoryAddRequestTest, InvalidRequest) { |
+ TestResult(400, "{\"error\":{\"errors\":[{\"domain\":\"global\"," |
+ "\"reason\":\"invalid\",\"message\":\"Invalid Value\"}]," |
+ "\"code\":400,\"message\":\"Invalid Value\"}}", |
+ DirectoryAddRequest::ERROR_INVALID_REQUEST, |
+ "Invalid Value"); |
+} |
+ |
+TEST_F(DirectoryAddRequestTest, InvalidToken) { |
+ TestResult(401, "{\"error\":{\"errors\":[{\"domain\":\"global\"," |
+ "\"reason\":\"invalid\",\"message\":\"Token invalid\"," |
+ "\"locationType\":\"header\",\"location\":\"Authorization\"}]," |
+ "\"code\":401,\"message\":\"Token invalid\"}}", |
+ DirectoryAddRequest::ERROR_AUTH, |
+ "Token invalid"); |
+} |
+ |
+} // namespace remoting |