[users] Also test hostname-setting via hostnamed

SEE #1140
This commit is contained in:
Adriaan de Groot 2020-02-18 10:16:19 +01:00
parent f1435452ea
commit 094c213baa
2 changed files with 24 additions and 2 deletions

View File

@ -83,20 +83,27 @@ ff02::2 ip6-allrouters
.failed() ); .failed() );
} }
STATICTEST void STATICTEST bool
setSystemdHostname( const QString& hostname ) setSystemdHostname( const QString& hostname )
{ {
QDBusInterface hostnamed( "org.freedesktop.hostname1", QDBusInterface hostnamed( "org.freedesktop.hostname1",
"/org/freedesktop/hostname1", "/org/freedesktop/hostname1",
"org.freedesktop.hostname1", "org.freedesktop.hostname1",
QDBusConnection::systemBus() ); QDBusConnection::systemBus() );
if ( !hostnamed.isValid() )
{
cWarning() << "Interface" << hostnamed.interface() << "is not valid.";
return false;
}
bool success = true;
// Static, writes /etc/hostname // Static, writes /etc/hostname
{ {
QDBusReply< uint > r = hostnamed.call( "SetStaticHostname", hostname, false ); QDBusReply< uint > r = hostnamed.call( "SetStaticHostname", hostname, false );
if ( !r.isValid() ) if ( !r.isValid() )
{ {
cWarning() << "Could not set hostname through org.freedesktop.hostname1.SetStaticHostname." << r.error(); cWarning() << "Could not set hostname through org.freedesktop.hostname1.SetStaticHostname." << r.error();
success = false;
} }
} }
// Dynamic, updates kernel // Dynamic, updates kernel
@ -105,8 +112,11 @@ setSystemdHostname( const QString& hostname )
if ( !r.isValid() ) if ( !r.isValid() )
{ {
cWarning() << "Could not set hostname through org.freedesktop.hostname1.SetHostname." << r.error(); cWarning() << "Could not set hostname through org.freedesktop.hostname1.SetHostname." << r.error();
success = false;
} }
} }
return success;
} }

View File

@ -21,7 +21,7 @@
// Implementation details // Implementation details
extern bool setFileHostname( const QString& ); extern bool setFileHostname( const QString& );
extern bool writeFileEtcHosts( const QString& ); extern bool writeFileEtcHosts( const QString& );
extern void setSystemdHostname( const QString& ); extern bool setSystemdHostname( const QString& );
#include "GlobalStorage.h" #include "GlobalStorage.h"
#include "JobQueue.h" #include "JobQueue.h"
@ -44,6 +44,7 @@ private Q_SLOTS:
void testEtcHostname(); void testEtcHostname();
void testEtcHosts(); void testEtcHosts();
void testHostnamed();
void cleanup(); void cleanup();
@ -116,6 +117,17 @@ UsersTests::testEtcHosts()
QCOMPARE( QFileInfo( m_dir.filePath( "etc/hosts" ) ).size(), 150 + 22 - 2 ); QCOMPARE( QFileInfo( m_dir.filePath( "etc/hosts" ) ).size(), 150 + 22 - 2 );
} }
void
UsersTests::testHostnamed()
{
// Since the service might not be running (e.g. non-systemd systems,
// FreeBSD, docker, ..) we're not going to fail a test here.
// There's also the permissions problem to think of.
QEXPECT_FAIL( "", "Hostname changes are access-controlled", Continue );
QVERIFY( setSystemdHostname( "tubophone.calamares.io" ) );
}
void void
UsersTests::cleanup() UsersTests::cleanup()
{ {