diff --git a/src/modules/users/Tests.cpp b/src/modules/users/Tests.cpp index ff435803d..75abd46c6 100644 --- a/src/modules/users/Tests.cpp +++ b/src/modules/users/Tests.cpp @@ -19,6 +19,7 @@ #include "Config.h" +#include "JobQueue.h" #include "utils/Logger.h" #include @@ -45,6 +46,7 @@ private Q_SLOTS: void testHostActions_data(); void testHostActions(); void testPasswordChecks(); + void testUserPassword(); }; UserTests::UserTests() {} @@ -136,7 +138,8 @@ UserTests::testHostActions() { m.insert( "setHostname", string ); } - QCOMPARE( getHostNameActions( m ), HostNameActions( result ) | HostNameAction::WriteEtcHosts ); // write bits default to true + QCOMPARE( getHostNameActions( m ), + HostNameActions( result ) | HostNameAction::WriteEtcHosts ); // write bits default to true m.insert( "writeHostsFile", false ); QCOMPARE( getHostNameActions( m ), HostNameActions( result ) ); m.insert( "writeHostsFile", true ); @@ -149,13 +152,63 @@ UserTests::testPasswordChecks() { PasswordCheckList l; QCOMPARE( l.length(), 0 ); - QVERIFY( !addPasswordCheck( "nonempty", QVariant(false), l ) ); // a silly setting + QVERIFY( !addPasswordCheck( "nonempty", QVariant( false ), l ) ); // a silly setting QCOMPARE( l.length(), 0 ); - QVERIFY( addPasswordCheck( "nonempty", QVariant(true), l ) ); + QVERIFY( addPasswordCheck( "nonempty", QVariant( true ), l ) ); QCOMPARE( l.length(), 1 ); } } +void +UserTests::testUserPassword() +{ + if ( !Calamares::JobQueue::instance() ) + { + (void)new Calamares::JobQueue( nullptr ); + } + + { + Config c; + + QVERIFY( c.userPassword().isEmpty() ); + QVERIFY( c.userPasswordSecondary().isEmpty() ); + // There are no validity checks, so no check for nonempty + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); + + c.setUserPassword( "bogus" ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Invalid ); + QCOMPARE( c.userPassword(), "bogus" ); + c.setUserPasswordSecondary( "bogus" ); + QCOMPARE( c.userPasswordValidity(), Config::PasswordValidity::Valid ); + } + + { + Config c; + + QVariantMap m; + m.insert( "allowWeakPasswords", true ); + m.insert( "allowWeakPasswordsDefault", true ); + m.insert( "defaultGroups", QStringList { "wheel" } ); + + QVariantMap pwreq; + pwreq.insert( "nonempty", true ); + pwreq.insert( "minLength", 6 ); + m.insert( "passwordRequirements", pwreq ); + + c.setConfigurationMap( m ); + + QVERIFY( c.userPassword().isEmpty() ); + QVERIFY( c.userPasswordSecondary().isEmpty() ); + // There is now a nonempty check, but weak passwords are ok + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Weak ) ); + + c.setUserPassword( "bogus" ); + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Invalid ) ); + c.setUserPasswordSecondary( "bogus" ); + QCOMPARE( c.userPasswordValidity(), int( Config::PasswordValidity::Weak ) ); + } +} + QTEST_GUILESS_MAIN( UserTests )