1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "sync/internal_api/public/attachments/fake_attachment_uploader.h" 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/bind.h" 8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/memory/ref_counted.h" 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/memory/ref_counted_memory.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/message_loop/message_loop.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "sync/api/attachments/attachment.h" 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace syncer { 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace { 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)const char kAttachmentData[] = "some data"; 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class FakeAttachmentUploaderTest : public testing::Test { 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) protected: 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetUp() { 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) upload_callback_count = 0; 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) upload_callback = base::Bind(&FakeAttachmentUploaderTest::Increment, 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this), 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &upload_callback_count); 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::MessageLoop message_loop; 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) FakeAttachmentUploader uploader; 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int upload_callback_count; 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AttachmentUploader::UploadCallback upload_callback; 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) private: 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void Increment(int* success_count, 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AttachmentUploader::UploadResult& result, 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const AttachmentId& ignored) { 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (result == AttachmentUploader::UPLOAD_SUCCESS) { 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ++(*success_count); 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}; 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Call upload attachment several times, see that the supplied callback is 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// invoked the same number of times with a result of SUCCESS. 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST_F(FakeAttachmentUploaderTest, UploadAttachment) { 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_refptr<base::RefCountedString> some_data(new base::RefCountedString); 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) some_data->data() = kAttachmentData; 50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Attachment attachment1 = Attachment::Create(some_data); 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Attachment attachment2 = Attachment::Create(some_data); 52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Attachment attachment3 = Attachment::Create(some_data); 53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) uploader.UploadAttachment(attachment1, upload_callback); 54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) uploader.UploadAttachment(attachment2, upload_callback); 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) uploader.UploadAttachment(attachment3, upload_callback); 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) message_loop.RunUntilIdle(); 57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ(upload_callback_count, 3); 58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace syncer 61