def test_correct_kmod_signing_command_executed_no_keys(self):
     # Check that calling signKmod() will generate no commands when
     # no keys are present.
     self.setUpKmodKeys(create=False)
     fake_call = FakeMethod(result=0)
     self.useFixture(MonkeyPatch("subprocess.call", fake_call))
     upload = SigningUpload()
     upload.generateKmodKeys = FakeMethod()
     upload.setTargetDirectory(self.archive, "test_1.0_amd64.tar.gz",
                               "distroseries")
     upload.signKmod('t.ko')
     self.assertEqual(0, fake_call.call_count)
     self.assertEqual(0, upload.generateKmodKeys.call_count)
 def test_create_kmod_keys_autokey_off(self):
     # Keys are not created.
     self.setUpKmodKeys(create=False)
     self.assertFalse(os.path.exists(self.kmod_pem))
     self.assertFalse(os.path.exists(self.kmod_x509))
     fake_call = FakeMethod(result=0)
     self.useFixture(MonkeyPatch("subprocess.call", fake_call))
     upload = SigningUpload()
     upload.callLog = FakeMethodCallLog(upload=upload)
     upload.setTargetDirectory(self.archive, "test_1.0_amd64.tar.gz",
                               "distroseries")
     upload.signKmod(os.path.join(self.makeTemporaryDirectory(), 't.ko'))
     self.assertEqual(0, upload.callLog.caller_count('Kmod keygen key'))
     self.assertEqual(0, upload.callLog.caller_count('Kmod keygen cert'))
     self.assertFalse(os.path.exists(self.kmod_pem))
     self.assertFalse(os.path.exists(self.kmod_x509))
 def test_correct_kmod_signing_command_executed(self):
     # Check that calling signKmod() will generate the expected command
     # when appropriate keys are present.
     self.setUpKmodKeys()
     fake_call = FakeMethod(result=0)
     self.useFixture(MonkeyPatch("subprocess.call", fake_call))
     upload = SigningUpload()
     upload.generateKmodKeys = FakeMethod()
     upload.setTargetDirectory(self.archive, "test_1.0_amd64.tar.gz",
                               "distroseries")
     upload.signKmod('t.ko')
     self.assertEqual(1, fake_call.call_count)
     # Assert command form.
     args = fake_call.calls[0][0][0]
     expected_cmd = [
         'kmodsign', '-D', 'sha512', self.kmod_pem, self.kmod_x509, 't.ko',
         't.ko.sig'
     ]
     self.assertEqual(expected_cmd, args)
     self.assertEqual(0, upload.generateKmodKeys.call_count)
    def process(self):
        self.tarfile.close()
        self.buffer.close()
        upload = SigningUpload()
        upload.signUefi = FakeMethod()
        upload.signKmod = FakeMethod()
        upload.signOpal = FakeMethod()
        # Under no circumstances is it safe to execute actual commands.
        fake_call = FakeMethod(result=0)
        self.useFixture(MonkeyPatch("subprocess.call", fake_call))
        upload.process(self.archive, self.path, self.suite)
        self.assertEqual(0, fake_call.call_count)

        return upload