/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ /*************************************************************************** * acltest.cc * * Sun Jul 5 19:45:18 CEST 2020 * Copyright 2020 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Munia. * * Munia is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Munia is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Munia; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "dgunit.h" #include #include "scopedfile.h" class TestACL : public ACL { public: TestACL(ScopedFile& file) : ACL(file.filename()) { } const std::map& getUsers() { return users; } }; class ACLTest : public DGUnit { public: ACLTest() { DGUNIT_TEST(ACLTest::test); } void test() { ScopedFile file( "testuser:$argon2i$v=19$m=65536,t=10,p=1$I9CYkvXqK0WyAl/dsJsRNw$STVDgS6Uc3NaPTyfUAq1mFqvsIEkKp3UF3qZZjgN4JY\n" "anotherone:$argon2i$v=19$m=65536,t=10,p=1$/+YjcFJerRkmPgIiRq1Hxg$m+Fy+XA8qhcz6lO6INkcRxeSq8ottCHTt8AtqUECI/w\n" ); TestACL acl(file); DGUNIT_ASSERT(acl.load()); const auto& users = acl.getUsers(); DGUNIT_ASSERT_EQUAL(2u, users.size()); DGUNIT_ASSERT(users.find("testuser") != users.end()); DGUNIT_ASSERT(users.find("anotherone") != users.end()); DGUNIT_ASSERT_EQUAL(std::string("testuser"), users.at("testuser").username); DGUNIT_ASSERT_EQUAL(std::string("anotherone"), users.at("anotherone").username); DGUNIT_ASSERT(acl.checkPassword("testuser", "1234") == true); DGUNIT_ASSERT(acl.checkPassword("testuser", "12345") == false); DGUNIT_ASSERT(acl.checkPassword("anotherone", "asdf") == true); DGUNIT_ASSERT(acl.checkPassword("anotherone", "asdfg") == false); DGUNIT_ASSERT(acl.checkPassword("noone", "asdfg") == false); } }; // Registers the fixture into the 'registry' static ACLTest test;