def main(): # O modargs sempre espera que a chamada da linha de comando tenha sido # $ prog command args # Por isso ignoramos o primeiro item da tupla retornada por ele. _, params = args.parse(sys.argv[1:]) _validate_params(params) user = os.environ['user'] key = os.environ['key'] container = params.get('container', None) dryrun = params.get('dryrun', False) rule = params.get('rule', None) rule_param = params.get('ruleparam', None) rule_instance = AVAILABLE_RULES[rule](rule_param) try: deleted = collect(container=container, dryrun=dryrun, rule=rule_instance, user=user, key=key) print deleted print "Removing {0} objects from container {1}".format(len(deleted), container) except AuthenticationFailed as auth: print "User or API KEY wrong ", auth.message except NoSuchContainer as nocontainer: print "No such container: ", nocontainer.message except Exception as e: print "Ops, an error ocurred : ", e.message import traceback traceback.print_exc() sys.exit(0)
def test_specific_container(self): mock_obj1 = mock.MagicMock() mock_obj1.name = 'mock1' mock_cont1 = mock.MagicMock() mock_cont1.name = 'container1' mock_cont1.get_objects.return_value = [mock_obj1] mock_obj2 = mock.MagicMock() mock_obj2.name = 'mock2' mock_cont2 = mock.MagicMock() mock_cont2.name = 'container2' mock_cont2.get_objects.return_value = [mock_obj2] mock_conn = mock.MagicMock() mock_conn.get_all_containers.return_value = [mock_cont1, mock_cont2] mock_conn.get_container.return_value = mock_cont1 with mock.patch('cloudfiles.get_connection', return_value=mock_conn): deleted = collect(rule=Rule(), container='container1', user=mock.ANY, key=mock.ANY) self.assertIn(mock.call.delete_object(mock_obj1.name), mock_cont1.method_calls) self.assertNotIn(mock.call.delete_object(mock_obj2.name), mock_cont2.method_calls) self.assertItemsEqual([mock_obj1.name], deleted)
def test_dryrun_yes_rule_true_does_not_collect(self): mock_obj = mock.MagicMock() mock_obj.name = 'blargh' mock_cont = mock.MagicMock() mock_cont.get_objects.return_value = [mock_obj] mock_conn = mock.MagicMock() mock_conn.get_all_containers.return_value = [mock_cont] mock_conn.get_container.return_value = mock_cont with mock.patch('cloudfiles.get_connection', return_value=mock_conn): deleted = collect(rule=Rule(), dryrun=True,user=mock.ANY, key=mock.ANY) self.assertNotIn(mock.call.delete_object(mock_obj.name), mock_cont.method_calls) self.assertItemsEqual([mock_obj.name], deleted)
def test_collect_applies_rule(self): mock_obj1 = mock.MagicMock() mock_obj1.name = 'pref_name_suf' mock_obj2 = mock.MagicMock() mock_obj2.name = 'noprefnosuf' mock_cont = mock.MagicMock() mock_cont.get_objects.return_value = [mock_obj1, mock_obj2] mock_conn = mock.MagicMock() mock_conn.get_all_containers.return_value = [mock_cont] mock_conn.get_container.return_value = mock_cont with mock.patch('cloudfiles.get_connection', return_value=mock_conn): deleted = collect(rule=namehasprefix('pref')&namehassuffix('suf') ,user=mock.ANY, key=mock.ANY) self.assertIn(mock.call.delete_object(mock_obj1.name), mock_cont.method_calls) self.assertNotIn(mock.call.delete_object(mock_obj2.name), mock_cont.method_calls) self.assertItemsEqual([mock_obj1.name], deleted)