From a9dad33a0ea08feca098d045b2c4914eda1d5f2a Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 16 Sep 2020 01:03:27 +0100 Subject: Test the hiding mapper --- netfs/fuse/fuseMappersImpl.cpp | 5 ++++- netfs/fuse/fuseMappersImpl.h | 3 ++- netfs/unittests/testLib.cpp | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/netfs/fuse/fuseMappersImpl.cpp b/netfs/fuse/fuseMappersImpl.cpp index 87266b1..d22f3a4 100644 --- a/netfs/fuse/fuseMappersImpl.cpp +++ b/netfs/fuse/fuseMappersImpl.cpp @@ -2,6 +2,9 @@ #include namespace NetFS::Client { + constexpr int MASK_EVERYTHING = ~0; + static_assert(MASK_EVERYTHING == static_cast(0xFFFFFFFF)); + HideUnknownMapperImpl::HideUnknownMapperImpl() : HideUnknownMapperImpl(std::make_shared()) { } HideUnknownMapperImpl::HideUnknownMapperImpl(EntryResolverPtr u) : @@ -20,7 +23,7 @@ namespace NetFS::Client { auto u = users->getEntry(un); auto g = groups->getEntry(gn); if (!u || !g) { - return {0, 0, 0xFFFFFFF}; + return {0, 0, MASK_EVERYTHING}; } return {static_cast(u->id), static_cast(g->id), 0}; } diff --git a/netfs/fuse/fuseMappersImpl.h b/netfs/fuse/fuseMappersImpl.h index b8e87f4..a0b1eb3 100644 --- a/netfs/fuse/fuseMappersImpl.h +++ b/netfs/fuse/fuseMappersImpl.h @@ -4,10 +4,11 @@ #include "entries.h" #include "entryResolver.h" #include +#include namespace NetFS { namespace Client { - class HideUnknownMapperImpl : public HideUnknownMapper { + class DLL_PUBLIC HideUnknownMapperImpl : public HideUnknownMapper { public: HideUnknownMapperImpl(); HideUnknownMapperImpl(EntryResolverPtr u); diff --git a/netfs/unittests/testLib.cpp b/netfs/unittests/testLib.cpp index d46b072..29167c4 100644 --- a/netfs/unittests/testLib.cpp +++ b/netfs/unittests/testLib.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include class TestEntCache : public EntCache { @@ -121,3 +122,36 @@ BOOST_AUTO_TEST_CASE(bad_mapfilesystem) } BOOST_AUTO_TEST_SUITE_END(); + +BOOST_FIXTURE_TEST_SUITE(hm, NetFS::Client::HideUnknownMapperImpl); + +BOOST_AUTO_TEST_CASE(good_maptransport) +{ + auto fs = mapTransport("root", "root"); + BOOST_CHECK_EQUAL(0, fs.uid); + BOOST_CHECK_EQUAL(0, fs.gid); + BOOST_CHECK_EQUAL(0, fs.mask); +} + +BOOST_AUTO_TEST_CASE(good_mapfs) +{ + auto tn = mapFileSystem(0, 0); + BOOST_CHECK_EQUAL("root", tn.username); + BOOST_CHECK_EQUAL("root", tn.groupname); +} + +BOOST_AUTO_TEST_CASE(bad_maptransport) +{ + BOOST_CHECK_EQUAL(mapTransport("root", "").mask, ~0); + BOOST_CHECK_EQUAL(mapTransport("", "root").mask, ~0); + BOOST_CHECK_EQUAL(mapTransport("", "").mask, ~0); +} + +BOOST_AUTO_TEST_CASE(bad_mapfilesystem) +{ + BOOST_REQUIRE_THROW(mapFileSystem(0, -1), NetFS::SystemError); + BOOST_REQUIRE_THROW(mapFileSystem(-1, 0), NetFS::SystemError); + BOOST_REQUIRE_THROW(mapFileSystem(-1, -1), NetFS::SystemError); +} + +BOOST_AUTO_TEST_SUITE_END(); -- cgit v1.2.3