# Path: binstar_client/scripts/cli.py
# def main(args=None, exit=True):
#     binstar_main(command_module, args, exit,
#                  description=__doc__, version=version)
# 
# Path: binstar_client/tests/fixture.py
# class CLITestCase(unittest.TestCase):
#     def setUp(self):
#         self.get_config_patch = mock.patch('binstar_client.utils.get_config')
#         self.get_config = self.get_config_patch.start()
#         self.get_config.return_value = {}
# 
#         self.load_token_patch = mock.patch('binstar_client.utils.config.load_token')
#         self.load_token = self.load_token_patch.start()
#         self.load_token.return_value = '123'
# 
#         self.store_token_patch = mock.patch('binstar_client.utils.config.store_token')
#         self.store_token = self.store_token_patch.start()
# 
#         self.setup_logging_patch = mock.patch('binstar_client.scripts.cli._setup_logging')
#         self.setup_logging_patch.start()
# 
#         self.logger = logger = logging.getLogger('binstar')
#         logger.setLevel(logging.INFO)
#         self.stream = AnyIO()
#         self.hndlr = hndlr = logging.StreamHandler(stream=self.stream)
#         hndlr.setLevel(logging.INFO)
#         logger.addHandler(hndlr)
# 
#     def tearDown(self):
#         self.setup_logging_patch.stop()
#         self.get_config_patch.stop()
#         self.load_token_patch.stop()
#         self.store_token_patch.stop()
# 
#         self.logger.removeHandler(self.hndlr)
# 
# Path: binstar_client/tests/urlmock.py
# def urlpatch(func):
#     @wraps(func)
#     def inner(self, *args, **kwargs):
#         with Registry() as r:
#             return func(self, r, *args, **kwargs)
#     return inner
# 
# Path: binstar_client/utils/test/utils.py
# def data_dir(filename):
#     base_path = inspect.stack()[1][1]  # function caller path
#     test_data = os.path.join(os.path.dirname(base_path), 'data')
#     return os.path.join(test_data, filename)


import base64
import json
import unittest
from binstar_client.scripts.cli import main
from binstar_client.tests.fixture import CLITestCase
from binstar_client.tests.urlmock import urlpatch
from binstar_client.utils.test.utils import data_dir
'''
Created on Feb 18, 2014

@author: sean
'''
from __future__ import unicode_literals




@unittest.skip("Need to change this to binsar package --create")
class Test(CLITestCase):
    @urlpatch
    def test_register_public(self, registry):
        r1 = registry.register(method='GET', path='/user', content='{"login": "eggs"}')
        r2 = registry.register(method='GET', path='/package/eggs/foo', status=404)
        r3 = registry.register(method='POST', path='/package/eggs/foo', status=200, content='{"login": "eggs"}')

        main(['--show-traceback', 'register', data_dir('foo-0.1-0.tar.bz2')], False)

        r1.assertCalled()
        r2.assertCalled()
        r3.assertCalled()

        data = json.loads(r3.req.body)
        self.assertTrue(data['public'])


# Path: binstar_client/scripts/cli.py
# def main(args=None, exit=True):
#     binstar_main(command_module, args, exit,
#                  description=__doc__, version=version)
# 
# Path: binstar_client/tests/fixture.py
# class CLITestCase(unittest.TestCase):
#     def setUp(self):
#         self.get_config_patch = mock.patch('binstar_client.utils.get_config')
#         self.get_config = self.get_config_patch.start()
#         self.get_config.return_value = {}
# 
#         self.load_token_patch = mock.patch('binstar_client.utils.config.load_token')
#         self.load_token = self.load_token_patch.start()
#         self.load_token.return_value = '123'
# 
#         self.store_token_patch = mock.patch('binstar_client.utils.config.store_token')
#         self.store_token = self.store_token_patch.start()
# 
#         self.setup_logging_patch = mock.patch('binstar_client.scripts.cli._setup_logging')
#         self.setup_logging_patch.start()
# 
#         self.logger = logger = logging.getLogger('binstar')
#         logger.setLevel(logging.INFO)
#         self.stream = AnyIO()
#         self.hndlr = hndlr = logging.StreamHandler(stream=self.stream)
#         hndlr.setLevel(logging.INFO)
#         logger.addHandler(hndlr)
# 
#     def tearDown(self):
#         self.setup_logging_patch.stop()
#         self.get_config_patch.stop()
#         self.load_token_patch.stop()
#         self.store_token_patch.stop()
# 
#         self.logger.removeHandler(self.hndlr)
# 
# Path: binstar_client/tests/urlmock.py
# def urlpatch(func):
#     @wraps(func)
#     def inner(self, *args, **kwargs):
#         with Registry() as r:
#             return func(self, r, *args, **kwargs)
#     return inner
# 
# Path: binstar_client/utils/test/utils.py
# def data_dir(filename):
#     base_path = inspect.stack()[1][1]  # function caller path
#     test_data = os.path.join(os.path.dirname(base_path), 'data')
#     return os.path.join(test_data, filename)


# Path: binstar_client/tests/test_register.py
import base64
import json
import unittest
from binstar_client.scripts.cli import main
from binstar_client.tests.fixture import CLITestCase
from binstar_client.tests.urlmock import urlpatch
from binstar_client.utils.test.utils import data_dir

'''
Created on Feb 18, 2014

@author: sean
'''
from __future__ import unicode_literals




@unittest.skip("Need to change this to binsar package --create")
class Test(CLITestCase):
    @urlpatch
    def test_register_public(self, registry):
        r1 = registry.register(method='GET', path='/user', content='{"login": "eggs"}')
        r2 = registry.register(method='GET', path='/package/eggs/foo', status=404)
        r3 = registry.register(method='POST', path='/package/eggs/foo', status=200, content='{"login": "eggs"}')

        main(['--show-traceback', 'register', data_dir('foo-0.1-0.tar.bz2')], False)

        r1.assertCalled()
        r2.assertCalled()
        r3.assertCalled()

        data = json.loads(r3.req.body)
        self.assertTrue(data['public'])


    @urlpatch