| // Copyright 2013 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. |
| |
| #ifndef SYNC_TEST_ACCOUNTS_CLIENT_TEST_ACCOUNTS_CLIENT_H_ |
| #define SYNC_TEST_ACCOUNTS_CLIENT_TEST_ACCOUNTS_CLIENT_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/message_loop/message_loop.h" |
| #include "url/gurl.h" |
| |
| using std::string; |
| using std::vector; |
| |
| // The data associated with an account session. |
| struct AccountSession { |
| AccountSession(); |
| ~AccountSession(); |
| |
| string username; |
| string account_space; |
| string session_id; |
| string expiration_time; |
| }; |
| |
| // A test-side client for the Test Accounts service. This service provides |
| // short-term, exclusive access to test accounts for the purpose of testing |
| // against real Chrome Sync servers. |
| class TestAccountsClient { |
| public: |
| // Creates a client associated with the given |server| URL (e.g., |
| // http://service-runs-here.com), |account_space| (for account segregation), |
| // and |usernames| (the collection of accounts to be chosen from). |
| TestAccountsClient(const string& server, |
| const string& account_space, |
| const vector<string>& usernames); |
| |
| virtual ~TestAccountsClient(); |
| |
| // Attempts to claim an account via the Test Accounts service. If |
| // successful, true is returned and the given |session| has its data set. |
| // If an error occurred, then false is returned. |
| bool ClaimAccount(AccountSession* session); |
| |
| // Attempts to release an account via the Test Accounts service. The value |
| // of |session| should be one returned from ClaimAccount(). This function |
| // is best-effort and fails silently. |
| void ReleaseAccount(const AccountSession& session); |
| |
| // Sends an HTTP POST request to the Test Accounts service. |
| virtual bool SendRequest(const GURL& url, string* response); |
| |
| private: |
| GURL CreateGURLWithPath(const string& path); |
| base::MessageLoopForIO io_loop_; |
| const string server_; |
| const string account_space_; |
| vector<string> usernames_; |
| }; |
| |
| #endif // SYNC_TEST_ACCOUNTS_CLIENT_TEST_ACCOUNTS_CLIENT_H_ |