示例#1
0
    def test_positive_create_2(self, data):
        """@test: Create gpg key with valid name and valid gpg key via file
        import using the a new organization

        @feature: GPG Keys

        @assert: gpg key is created

        @BZ: 1172009

        """

        # Setup data to pass to the factory
        data = data.copy()
        data['key'] = VALID_GPG_KEY_FILE_PATH
        data['organization-id'] = self.org['id']
        try:
            new_obj = make_gpg_key(data)
        except CLIFactoryError as err:
            self.fail(err)

        # Can we find the new object?
        result = GPGKey().exists({'organization-id': self.org['id']},
                                 (self.search_key, new_obj[self.search_key]))

        self.assertEqual(result.return_code, 0, "Failed to create object")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(new_obj[self.search_key],
                         result.stdout[self.search_key])
示例#2
0
    def test_bugzilla_1108227(self):
        """@Test: Hammer fails to get a gpg info by name

        @Feature: GPG Keys

        @Assert: can get gpg key info by name

        @BZ: 1108227

        """

        # GPG Key data
        data = {'name': gen_string("alpha", 10)}
        data['organization-id'] = self.org['id']

        # Setup a new key file
        data['key'] = VALID_GPG_KEY_FILE_PATH
        try:
            new_obj = make_gpg_key(data)
        except CLIFactoryError as err:
            self.fail(err)

        # Can we find the new object?
        result = GPGKey().info({
            'name': new_obj['name'],
            'organization-id': self.org['id'],
        })

        self.assertEqual(result.return_code, 0, "Failed to create object")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(new_obj[self.search_key],
                         result.stdout[self.search_key])
示例#3
0
    def test_redmine_4272(self):
        """@Test: gpg info should display key content

        @Feature: GPG Keys

        @Assert: gpg info should display key content

        @BZ: Redmine#4272

        """

        # GPG Key data
        data = {'name': gen_string("alpha", 10)}
        data['organization-id'] = self.org['id']

        # Setup a new key file
        content = gen_alphanumeric()
        gpg_key = self.create_gpg_key_file(content=content)
        self.assertIsNotNone(gpg_key, 'GPG Key file must be created')
        data['key'] = gpg_key
        try:
            new_obj = make_gpg_key(data)
        except CLIFactoryError as err:
            self.fail(err)

        # Can we find the new object?
        result = GPGKey().info({'id': new_obj['id']})

        self.assertEqual(result.return_code, 0,
                         "Failed to get object information")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(result.stdout['content'], content)
示例#4
0
    def test_redmine_4271(self):
        """@Test: cvs output for gpg subcommand doesn\'t work

        @Feature: GPG Keys

        @Assert: cvs output for gpg info works

        @BZ: Redmine#4271

        """

        # GPG Key data
        data = {'name': gen_string("alpha", 10)}
        data['organization-id'] = self.org['id']

        # Setup a new key file
        data['key'] = VALID_GPG_KEY_FILE_PATH
        try:
            new_obj = make_gpg_key(data)
        except CLIFactoryError as err:
            self.fail(err)

        # Can we find the new object?
        result = GPGKey().info({'id': new_obj['id']})

        self.assertEqual(result.return_code, 0,
                         "Failed to get object information")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(new_obj[self.search_key],
                         result.stdout[self.search_key])
示例#5
0
    def test_negative_create_1(self, data):
        """@test: Create gpg key with valid name and valid gpg key via file
        import then try to create new one with same name

        @feature: GPG Keys

        @assert: gpg key is not created

        @BZ: 1172009

        """

        # Setup data to pass to the factory
        data = data.copy()
        data['organization-id'] = self.org['id']
        try:
            new_obj = make_gpg_key(data)
        except CLIFactoryError as err:
            self.fail(err)

        # Can we find the new object?
        result = GPGKey().exists({'organization-id': self.org['id']},
                                 (self.search_key, new_obj[self.search_key]))

        self.assertEqual(result.return_code, 0, "Failed to create object")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(new_obj[self.search_key],
                         result.stdout[self.search_key])

        # Setup a new key file
        data['key'] = '/tmp/%s' % gen_alphanumeric()
        gpg_key = self.create_gpg_key_file()
        self.assertIsNotNone(gpg_key, 'GPG Key file must be created')
        ssh.upload_file(local_file=gpg_key, remote_file=data['key'])

        # Try to create a gpg key with the same name
        new_obj = GPGKey().create(data)
        self.assertNotEqual(new_obj.return_code, 0,
                            "Object should not be created")
        self.assertGreater(len(new_obj.stderr), 0,
                           "Should have raised an exception")
示例#6
0
    def test_negative_create_2(self, data):
        """
        @test: Create gpg key with valid name and no gpg key
        @feature: GPG Keys
        @assert: gpg key is not created
        """

        # Setup data to pass to create
        data = data.copy()
        data['organization-id'] = self.org['id']

        # Try to create a new object passing @data to factory method
        new_obj = GPGKey().create(data)
        self.assertNotEqual(new_obj.return_code, 0,
                            "Object should not be created")
        self.assertGreater(len(new_obj.stderr), 0,
                           "Should have raised an exception")
示例#7
0
    def test_negative_create_3(self, data):
        """
        @test: Create gpg key with invalid name and valid gpg key via
        file import
        @feature: GPG Keys
        @assert: gpg key is not created
        """

        # Setup data to pass to create
        data = data.copy()
        data['key'] = '/tmp/%s' % generate_name()
        data['organization-id'] = self.org['id']

        ssh.upload_file(local_file=VALID_GPG_KEY_FILE_PATH,
                        remote_file=data['key'])

        # Try to create a new object passing @data to factory method
        new_obj = GPGKey().create(data)
        self.assertNotEqual(new_obj.return_code, 0,
                            "Object should not be created")
        self.assertGreater(len(new_obj.stderr), 0,
                           "Should have raised an exception")
示例#8
0
class TestGPGKey(BaseCLI):
    """Tests for GPG Keys via Hammer CLI"""

    search_key = 'name'

    @classmethod
    def setUpClass(cls):
        """
        Create a shared organization for all tests to avoid generating hundreds
        of organizations
        """
        BaseCLI.setUpClass()
        cls.org = cls.create_org()

    @classmethod
    def create_org(cls):
        """Creates and returns an organization"""
        label = generate_name(6)
        org = make_org({'label': label})
        result = Org.exists(tuple_search=('id', org['id']))

        org.update(result.stdout)

        return org

    def create_gpg_key_file(self, content=None):
        """
        Creates a fake GPG Key file and returns its path or None if an error
        happens.
        """

        (file_handle, key_filename) = mkstemp(text=True)
        if not content:
            content = generate_name(minimum=20, maximum=50)
        with open(key_filename, "w") as gpg_key_file:
            gpg_key_file.write(content)
            return key_filename

        return None

    # Bug verification

    @redminebug('4271')
    def test_redmine_4271(self):
        """
        @Test: cvs output for gpg subcommand doesn\'t work
        @Feature: GPG Keys
        @Assert: cvs output for gpg info works
        @BZ: Redmine#4271
        """

        # GPG Key data
        data = {'name': generate_string("alpha", 10)}
        data['organization-id'] = self.org['id']

        # Setup a new key file
        data['key'] = VALID_GPG_KEY_FILE_PATH
        try:
            new_obj = make_gpg_key(data)
        except Exception, e:
            self.fail(e)

        # Can we find the new object?
        result = GPGKey().info({'id': new_obj['id']})

        self.assertEqual(result.return_code, 0,
                         "Failed to get object information")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(new_obj[self.search_key],
                         result.stdout[self.search_key])
示例#9
0
        # GPG Key data
        data = {'name': generate_string("alpha", 10)}
        data['organization-id'] = self.org['id']

        # Setup a new key file
        content = generate_name()
        gpg_key = self.create_gpg_key_file(content=content)
        self.assertIsNotNone(gpg_key, 'GPG Key file must be created')
        data['key'] = gpg_key
        try:
            new_obj = make_gpg_key(data)
        except Exception, e:
            self.fail(e)

        # Can we find the new object?
        result = GPGKey().info({'id': new_obj['id']})

        self.assertEqual(result.return_code, 0,
                         "Failed to get object information")
        self.assertEqual(len(result.stderr), 0,
                         "There should not be an exception here")
        self.assertEqual(result.stdout['content'], content)

    @redminebug('4480')
    def test_redmine_4480(self):
        """
        @Test: Hammer fails to get a gpg info by name
        @Feature: GPG Keys
        @Assert: can get gpg key info by name
        @BZ: Redmine#4480
        """