blob: 5c3679a1ca6739c93de0dba9ab3f02e9aa373ea5 [file] [log] [blame]
// Copyright 2018 The Chromium OS 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 <gtest/gtest.h>
#include "smbprovider/fake_samba_interface.h"
#include "smbprovider/iterator/share_iterator.h"
#include "smbprovider/smbprovider_test_helper.h"
namespace smbprovider {
class ShareIteratorTest : public testing::Test {
public:
ShareIteratorTest() = default;
~ShareIteratorTest() override = default;
protected:
void CreateHost() { fake_samba_.AddDirectory(GetDefaultServer()); }
FakeSambaInterface fake_samba_;
private:
DISALLOW_COPY_AND_ASSIGN(ShareIteratorTest);
};
TEST_F(ShareIteratorTest, InitSucceedsOnHostWithNoShares) {
CreateHost();
ShareIterator it(GetDefaultServer(), &fake_samba_);
EXPECT_EQ(0, it.Init());
EXPECT_TRUE(it.IsDone());
}
TEST_F(ShareIteratorTest, InitSucceedsOnHostWithShare) {
CreateHost();
fake_samba_.AddEntry("smb://wdshare/share1", SMBC_FILE_SHARE);
ShareIterator it(GetDefaultServer(), &fake_samba_);
EXPECT_EQ(0, it.Init());
EXPECT_FALSE(it.IsDone());
EXPECT_EQ("share1", it.Get().name);
}
TEST_F(ShareIteratorTest, ShouldOnlyReturnShareType) {
CreateHost();
fake_samba_.AddEntry("smb://wdshare/share1", SMBC_FILE_SHARE);
fake_samba_.AddDirectory("smb://wdshare/folder");
ShareIterator it(GetDefaultServer(), &fake_samba_);
EXPECT_EQ(0, it.Init());
EXPECT_FALSE(it.IsDone());
const DirectoryEntry& share = it.Get();
EXPECT_EQ("share1", share.name);
EXPECT_EQ("smb://wdshare/share1", share.full_path);
EXPECT_TRUE(share.is_directory);
EXPECT_EQ(-1, share.size);
EXPECT_EQ(-1, share.last_modified_time);
// Should be empty since there is only one SMBC_FILE_SHARE in the host.
EXPECT_EQ(0, it.Next());
EXPECT_TRUE(it.IsDone());
}
} // namespace smbprovider