Exemplo n.º 1
0
    def test_unsubscribe_unregistered(self):
        prod = StubProduct('stub_product')
        ent = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.RemoveCommand()

        self._inject_mock_invalid_consumer()

        cmd.main(['remove', '--all'])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent.is_deleted)

        prod = StubProduct('stub_product')
        ent1 = StubEntitlementCertificate(prod)
        ent2 = StubEntitlementCertificate(prod)
        ent3 = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent1, ent2, ent3]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.RemoveCommand()

        cmd.main([
            'remove',
            '--serial=%s' % ent1.serial,
            '--serial=%s' % ent3.serial
        ])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent1.is_deleted)
        self.assertFalse(ent2.is_deleted)
        self.assertTrue(ent3.is_deleted)
Exemplo n.º 2
0
    def test_unsubscribe_unregistered(self):
        connection.UEPConnection = StubUEP

        prod = StubProduct('stub_product')
        ent = StubEntitlementCertificate(prod)

        cmd = managercli.UnSubscribeCommand(ent_dir=StubEntitlementDirectory(
            [ent]),
                                            prod_dir=StubProductDirectory([]))

        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: False)
        StubConsumerIdentity.exists = classmethod(lambda cls: False)

        cmd.main(['unsubscribe', '--all'])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent.is_deleted)

        prod = StubProduct('stub_product')
        ent1 = StubEntitlementCertificate(prod)
        ent2 = StubEntitlementCertificate(prod)

        cmd = managercli.UnSubscribeCommand(ent_dir=StubEntitlementDirectory(
            [ent1, ent2]),
                                            prod_dir=StubProductDirectory([]))
        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: False)
        StubConsumerIdentity.exists = classmethod(lambda cls: False)

        cmd.main(['unsubscribe', '--serial=%s' % ent1.serial])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent1.is_deleted)
        self.assertFalse(ent2.is_deleted)
Exemplo n.º 3
0
    def setUp(self):
        stub_prod = StubProduct("fauxprod", provided_tags="TAG1,TAG2")
        stub_prod2 = StubProduct("fauxprovidedprod", provided_tags="TAG4")
        stub_prod_cert = StubProductCertificate(stub_prod,
                                                provided_products=[stub_prod2])
        stub_prod2 = StubProduct("fauxprod2", provided_tags="TAG5,TAG6")
        stub_prod2_cert = StubProductCertificate(stub_prod2)
        stub_prod_dir = StubProductDirectory([stub_prod_cert, stub_prod2_cert])

        stub_content = [
            StubContent("c1", required_tags="", gpg=None),  # no required tags
            StubContent("c2", required_tags="TAG1", gpg=""),
            StubContent("c3",
                        required_tags="TAG1,TAG2,TAG3"),  # should get skipped
            StubContent("c4",
                        required_tags="TAG1,TAG2,TAG4,TAG5,TAG6",
                        gpg="/gpg.key",
                        url="/$some/$path"),
            StubContent("c5", content_type="file", required_tags="", gpg=None),
            StubContent("c6", content_type="file", required_tags="", gpg=None),
        ]
        self.stub_ent_cert = StubEntitlementCertificate(stub_prod,
                                                        content=stub_content)
        stub_ent_dir = StubCertificateDirectory([self.stub_ent_cert])

        repolib.ConsumerIdentity = stubs.StubConsumerIdentity
        stub_uep = stubs.StubUEP()
        self.update_action = UpdateAction(prod_dir=stub_prod_dir,
                                          ent_dir=stub_ent_dir,
                                          uep=stub_uep)
Exemplo n.º 4
0
    def test_scan_for_expired_or_future_products(self):
        prod_dir = StubProductDirectory(pids=["a", "b", "c", "d", "e"])
        ent_dir = StubEntitlementDirectory([
            StubEntitlementCertificate(StubProduct("a")),
            StubEntitlementCertificate(StubProduct("b")),
            StubEntitlementCertificate(StubProduct("c")),
            StubEntitlementCertificate(
                StubProduct("d"),
                start_date=datetime.now() - timedelta(days=365),
                end_date=datetime.now() - timedelta(days=2)),
            StubEntitlementCertificate(
                StubProduct("e"),
                start_date=datetime.now() + timedelta(days=365),
                end_date=datetime.now() + timedelta(days=730)),
        ])

        inj.provide(inj.PROD_DIR, prod_dir)
        inj.provide(inj.ENT_DIR, ent_dir)

        sorter = StubCertSorter()
        sorter.valid_products = {"a": StubProduct("a")}
        sorter.partially_valid_products = {"b": StubProduct("b")}

        sorter._scan_entitlement_certs()

        self.assertEquals(["d"], sorter.expired_products.keys())
        self.assertEquals(["e"], sorter.future_products.keys())

        self.assertEquals(3, len(sorter.valid_entitlement_certs))
Exemplo n.º 5
0
    def setUp(self, mock_update):
        SubManFixture.setUp(self)
        # Setup mock product and entitlement certs:
        self.prod_dir = StubProductDirectory(
            pids=[INST_PID_1, INST_PID_2, INST_PID_3, INST_PID_4])
        self.ent_dir = StubEntitlementDirectory([
            StubEntitlementCertificate(PROD_2, ent_id=ENT_ID_2),
            StubEntitlementCertificate(PROD_1, ent_id=ENT_ID_1),
            StubEntitlementCertificate(product=PROD_4,
                                       stacking_id=STACK_1,
                                       ent_id=ENT_ID_4),
            # entitled, but not installed
            StubEntitlementCertificate(StubProduct('not_installed_product',
                                                   name="Some Product"),
                                       ent_id="SomeSubId"),
        ])

        self.mock_uep = StubUEP()

        self.status_mgr = EntitlementStatusCache()
        self.status_mgr.load_status = Mock(return_value=SAMPLE_COMPLIANCE_JSON)
        self.status_mgr.write_cache = Mock()
        inj.provide(inj.ENTITLEMENT_STATUS_CACHE, self.status_mgr)
        inj.provide(inj.PROD_DIR, self.prod_dir)
        inj.provide(inj.ENT_DIR, self.ent_dir)
        self.sorter = CertSorter()
        self.sorter.is_registered = Mock(return_value=True)
Exemplo n.º 6
0
    def _stub_content(self, include_content_access=False):
        stub_prod = StubProduct('stub_product', provided_tags="stub-product")

        stub_content = StubContent("a_test_repo", required_tags="stub-product")

        stub_content2 = StubContent("test_repo_2",
                                    required_tags="stub-product")

        stub_ent_cert = StubEntitlementCertificate(stub_prod,
                                                   content=[stub_content])
        stub_prod_cert = StubProductCertificate(stub_prod)

        certs = [stub_ent_cert]
        if include_content_access:
            self.stub_content_access_cert = StubEntitlementCertificate(
                stub_prod,
                content=[stub_content, stub_content2],
                entitlement_type=CONTENT_ACCESS_CERT_TYPE)
            # content access cert is first and last, so naively wrong implementations will prioritize it.
            certs = [
                self.stub_content_access_cert, stub_ent_cert,
                self.stub_content_access_cert
            ]
        stub_ent_dir = StubEntitlementDirectory(certs)
        stub_prod_dir = StubProductDirectory([stub_prod_cert])

        inj.provide(inj.ENT_DIR, stub_ent_dir)
        inj.provide(inj.PROD_DIR, stub_prod_dir)
Exemplo n.º 7
0
 def test_missing_installed_product(self, mock_update):
     # Add a new installed product server doesn't know about:
     prod_dir = StubProductDirectory(
         pids=[INST_PID_1, INST_PID_2, INST_PID_3, "product4"])
     inj.provide(inj.PROD_DIR, prod_dir)
     sorter = CertSorter()
     self.assertTrue('product4' in sorter.unentitled_products)
    def test_unsubscribe_registered(self):
        prod = StubProduct('stub_product')
        ent1 = StubEntitlementCertificate(prod)
        ent2 = StubEntitlementCertificate(prod)
        ent3 = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent1, ent2, ent3]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.UnSubscribeCommand()

        mock_identity = self._inject_mock_valid_consumer()
        managercli.EntCertActionInvoker = StubEntActionInvoker

        cmd.main(['unsubscribe', '--all'])
        self.assertEquals(cmd.cp.called_unbind_uuid, mock_identity.uuid)

        cmd.main(['unsubscribe', '--serial=%s' % ent1.serial])
        self.assertEquals(cmd.cp.called_unbind_serial, ['%s' % ent1.serial])

        code = cmd.main([
            'unsubscribe',
            '--serial=%s' % ent2.serial,
            '--serial=%s' % ent3.serial
        ])
        self.assertEquals(
            cmd.cp.called_unbind_serial,
            ['%s' % ent2.serial, '%s' % ent3.serial])
        self.assertEquals(code, 0)

        self.stub_cp_provider.get_consumer_auth_cp(
        ).unbindBySerial = mock.Mock(side_effect=connection.RestlibException(
            "Entitlement Certificate with serial number "
            "2300922701043065601 could not be found."))
        code = cmd.main(['unsubscribe', '--serial=%s' % '2300922701043065601'])
Exemplo n.º 9
0
    def setUp(self):
        super(RepoUpdateActionTests, self).setUp()
        stub_prod = StubProduct("fauxprod", provided_tags="TAG1,TAG2")
        stub_prod2 = StubProduct("fauxprovidedprod", provided_tags="TAG4")
        stub_prod_cert = StubProductCertificate(stub_prod,
                                                provided_products=[stub_prod2])
        stub_prod2 = StubProduct("fauxprod2", provided_tags="TAG5,TAG6")
        stub_prod2_cert = StubProductCertificate(stub_prod2)
        prod_dir = StubProductDirectory([stub_prod_cert, stub_prod2_cert])
        inj.provide(inj.PROD_DIR, prod_dir)

        stub_content = [
            StubContent("c1", required_tags="", gpg=None),  # no required tags
            StubContent("c2", required_tags="TAG1", gpg=""),
            StubContent("c3",
                        required_tags="TAG1,TAG2,TAG3"),  # should get skipped
            StubContent("c4",
                        required_tags="TAG1,TAG2,TAG4,TAG5,TAG6",
                        gpg="/gpg.key",
                        url="/$some/$path"),
            StubContent("c5", content_type="file", required_tags="", gpg=None),
            StubContent("c6", content_type="file", required_tags="", gpg=None),
        ]
        self.stub_ent_cert = StubEntitlementCertificate(stub_prod,
                                                        content=stub_content)
        ent_dir = StubEntitlementDirectory([self.stub_ent_cert])
        inj.provide(inj.ENT_DIR, ent_dir)

        repolib.ConsumerIdentity = StubConsumerIdentity
Exemplo n.º 10
0
 def test_no_subscriptions_unregister_button_is_blank(self):
     cert_dir = StubCertificateDirectory([])
     my_subs_tab = MySubscriptionsTab(self.backend,
                                      None,
                                      cert_dir,
                                      StubProductDirectory([]))
     self.assertFalse(my_subs_tab.unsubscribe_button.get_property('sensitive'))
Exemplo n.º 11
0
 def setUp(self):
     self.fact_cache_dir = tempfile.mkdtemp()
     fact_cache = self.fact_cache_dir + "/facts.json"
     fd = open(fact_cache, "w")
     fd.write(facts_buf)
     fd.close()
     self.f = facts.Facts(ent_dir=StubEntitlementDirectory([]),
                          prod_dir=StubProductDirectory([]))
     self.f.CACHE_FILE = fact_cache
Exemplo n.º 12
0
 def test_installed_mismatch_unentitled(self, mock_update):
     # Use a different product directory with something not present
     # in the response from the server as an unentitled product:
     prod_dir = StubProductDirectory(pids=[INST_PID_1, INST_PID_2])
     inj.provide(inj.PROD_DIR, prod_dir)
     sorter = CertSorter()
     self.assertFalse(INST_PID_3 in sorter.installed_products)
     # Should get filtered out of unentitled products even though
     # server reported it here:
     self.assertFalse(INST_PID_3 in sorter.unentitled_products)
    def test_unsubscribe_unregistered(self):
        connection.UEPConnection = StubUEP

        prod = StubProduct('stub_product')
        ent = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.UnSubscribeCommand()

        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: False)
        StubConsumerIdentity.exists = classmethod(lambda cls: False)

        cmd.main(['unsubscribe', '--all'])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent.is_deleted)

        prod = StubProduct('stub_product')
        ent1 = StubEntitlementCertificate(prod)
        ent2 = StubEntitlementCertificate(prod)
        ent3 = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent1, ent2, ent3]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.UnSubscribeCommand()
        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: False)
        StubConsumerIdentity.exists = classmethod(lambda cls: False)

        code = cmd.main([
            'unsubscribe',
            '--serial=%s' % ent1.serial,
            '--serial=%s' % ent3.serial
        ])
        self.assertTrue(cmd.entitlement_dir.list_called)
        self.assertTrue(ent1.is_deleted)
        self.assertFalse(ent2.is_deleted)
        self.assertTrue(ent3.is_deleted)
        self.assertEquals(code, 0)

        code = cmd.main(['unsubscribe', '--serial=%s' % '33333333'])
        self.assertEquals(code, 1)
Exemplo n.º 14
0
    def setUp(self):
        self.cc = self.command_class(ent_dir=StubEntitlementDirectory([]),
                                     prod_dir=StubProductDirectory([]))
        # neuter the _do_command, since this is mostly
        # for testing arg parsing
        self.cc._do_command = self._do_command
        self.cc.assert_should_be_registered = self._asert_should_be_registered

        # stub out uep
        managercli.connection.UEPConnection = self._uep_connection
        sys.stdout = MockStdout()
        sys.stderr = MockStderr()
Exemplo n.º 15
0
    def _stub_content(self):
        stub_prod = StubProduct('stub_product', provided_tags="stub-product")

        stub_content = StubContent("a_test_repo", required_tags="stub-product")

        stub_ent_cert = StubEntitlementCertificate(stub_prod,
                                                   content=[stub_content])
        stub_prod_cert = StubProductCertificate(stub_prod)

        stub_ent_dir = StubEntitlementDirectory([stub_ent_cert])
        stub_prod_dir = StubProductDirectory([stub_prod_cert])

        inj.provide(inj.ENT_DIR, stub_ent_dir)
        inj.provide(inj.PROD_DIR, stub_prod_dir)
Exemplo n.º 16
0
    def setUp(self):
        self.uep = StubUEP
        self.backend = StubBackend()
        self.consumer = Mock()
        self.facts = StubFacts({})

        self.cert1 = StubEntitlementCertificate(
            StubProduct('product2'),
            start_date=datetime.datetime(2010, 1, 1),
            end_date=datetime.datetime(2060, 1, 1),
            quantity="10",
            stacking_id=None)

        self.cert_dir = StubCertificateDirectory([self.cert1])
        self.my_subs_tab = MySubscriptionsTab(self.backend, self.consumer,
                                              self.facts, None, self.cert_dir,
                                              StubProductDirectory([]))
Exemplo n.º 17
0
    def test_installed_products_cache_written(self):
        connection.UEPConnection = StubUEP

        cmd = RegisterCommand(ent_dir=StubEntitlementDirectory([]),
                              prod_dir=StubProductDirectory([]))
        cmd._persist_identity_cert = self.stub_persist
        ConsumerIdentity.exists = classmethod(lambda cls: False)

        # Mock out facts and installed products:
        cmd.facts.get_facts = Mock(return_value={
            'fact1': 'val1',
            'fact2': 'val2'
        })
        cmd.facts.write_cache = Mock()
        cmd.installed_mgr.write_cache = Mock()

        cmd.main(['register', '--username=testuser1', '--password=password'])

        self.assertEquals(1, cmd.installed_mgr.write_cache.call_count)
Exemplo n.º 18
0
    def test_unsubscribe_registered(self):
        connection.UEPConnection = StubUEP

        cmd = managercli.UnSubscribeCommand(ent_dir=StubEntitlementDirectory(
            []),
                                            prod_dir=StubProductDirectory([]))

        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: True)
        StubConsumerIdentity.exists = classmethod(lambda cls: True)
        managercli.CertLib = StubCertLib

        cmd.main(['unsubscribe', '--all'])
        self.assertEquals(cmd.cp.called_unbind_uuid,
                          StubConsumerIdentity.CONSUMER_ID)

        serial = '123456'
        cmd.main(['unsubscribe', '--serial=%s' % serial])
        self.assertEquals(cmd.cp.called_unbind_serial, serial)
Exemplo n.º 19
0
    def setUp(self):
        super(MySubscriptionsTabTest, self).setUp()
        self.uep = StubUEP
        self.backend = StubBackend()

        self.cert1 = StubEntitlementCertificate(
            StubProduct('product2'),
            start_date=datetime.datetime(2010, 1, 1),
            end_date=datetime.datetime(2060, 1, 1),
            quantity="10", ent_id='prod2')
        self.cert2 = StubEntitlementCertificate(
            StubProduct('product3'),
            start_date=datetime.datetime(2010, 1, 1),
            end_date=datetime.datetime(2060, 1, 1),
            quantity="10", ent_id='prod3')

        self.cert_dir = StubCertificateDirectory([self.cert1, self.cert2])
        self.my_subs_tab = MySubscriptionsTab(self.backend,
                                              None,
                                              self.cert_dir,
                                              StubProductDirectory([]))
Exemplo n.º 20
0
    def test_register_persists_consumer_cert(self):
        connection.UEPConnection = StubUEP

        # When
        cmd = RegisterCommand(ent_dir=StubEntitlementDirectory([]),
                              prod_dir=StubProductDirectory([]))

        ConsumerIdentity.exists = classmethod(lambda cls: False)
        cmd._persist_identity_cert = self.stub_persist
        cmd.facts.get_facts = Mock(return_value={
            'fact1': 'val1',
            'fact2': 'val2'
        })
        cmd.facts.write_cache = Mock()
        cmd.installed_mgr.write_cache = Mock()

        cmd.main(['register', '--username=testuser1', '--password=password'])

        # Then
        self.assertEqual('dummy-consumer-uuid',
                         self.persisted_consumer["uuid"])
    def test_unsubscribe_registered(self):
        connection.UEPConnection = StubUEP

        prod = StubProduct('stub_product')
        ent1 = StubEntitlementCertificate(prod)
        ent2 = StubEntitlementCertificate(prod)
        ent3 = StubEntitlementCertificate(prod)

        inj.provide(inj.ENT_DIR, StubEntitlementDirectory([ent1, ent2, ent3]))
        inj.provide(inj.PROD_DIR, StubProductDirectory([]))
        cmd = managercli.UnSubscribeCommand()

        managercli.ConsumerIdentity = StubConsumerIdentity
        StubConsumerIdentity.existsAndValid = classmethod(lambda cls: True)
        StubConsumerIdentity.exists = classmethod(lambda cls: True)
        managercli.CertLib = StubCertLib

        cmd.main(['unsubscribe', '--all'])
        self.assertEquals(cmd.cp.called_unbind_uuid,
                          StubConsumerIdentity.CONSUMER_ID)

        cmd.main(['unsubscribe', '--serial=%s' % ent1.serial])
        self.assertEquals(cmd.cp.called_unbind_serial, ['%s' % ent1.serial])

        code = cmd.main([
            'unsubscribe',
            '--serial=%s' % ent2.serial,
            '--serial=%s' % ent3.serial
        ])
        self.assertEquals(
            cmd.cp.called_unbind_serial,
            ['%s' % ent2.serial, '%s' % ent3.serial])
        self.assertEquals(code, 0)

        connection.UEPConnection.unbindBySerial = mock.Mock(
            side_effect=connection.RestlibException(
                "Entitlement Certificate with serial number 2300922701043065601 could not be found."
            ))
        code = cmd.main(['unsubscribe', '--serial=%s' % '2300922701043065601'])
        self.assertEquals(code, 1)