class TestSpaces(TestCase, EntityTestCase):
    entity = Entity.Spaces
    entity_id = '023a02ca-3e73-11e4-8e50-7b146cbe6428'
    entity_count = 4
    skip_list = ['delete', 'edit', 'create']

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_get_spaces_files(self):
        """ GET /api/v2/spaces/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Files),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_spaces_files_templates(self):
        """ GET /api/v2/spaces/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(
                self.entity, self.entity_id, Entity.Files, 'templates'),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Files, 'templates')
        self.assertEqual(len(entities), 0)

    def test_get_space_projects(self):
        """" GET /api/v2/spaces/{id}/projects/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Projects),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Projects)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_space_project_templates(self):
        """ GET /api/v2/spaces/{id}/projects/templates """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(
                self.entity, self.entity_id, Entity.Projects, 'templates'),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Projects, 'templates')
        self.assertEqual(len(entities), 0)
class TestSpaces(TestCase, EntityTestCase):
    entity = Entity.Spaces
    entity_id = '023a02ca-3e73-11e4-8e50-7b146cbe6428'
    entity_count = 4
    skip_list = ['delete', 'edit', 'create']

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_get_spaces_files(self):
        """ GET /api/v2/spaces/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Files),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_spaces_files_templates(self):
        """ GET /api/v2/spaces/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Files, 'templates'),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files,
                                   'templates')
        self.assertEqual(len(entities), 0)

    def test_get_space_projects(self):
        """" GET /api/v2/spaces/{id}/projects/ """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Projects),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id,
                                   Entity.Projects)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_space_project_templates(self):
        """ GET /api/v2/spaces/{id}/projects/templates """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Projects, 'templates'),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id,
                                   Entity.Projects, 'templates')
        self.assertEqual(len(entities), 0)
class TestFiles(TestCase, EntityTestCase):
    entity = Entity.Files
    entity_id = '4ab3bb32-3e72-11e4-bfaa-ebeae41148db'
    entity_count = 45
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_getting_content(self):
        # TODO: There is a better way to do this.
        returned_content = open('tests/files/get_file', 'rb').read()
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(Entity.Files, self.entity_id, Entity.Content),
            body=returned_content
        )

        content = self.client.get(Entity.Files, self.entity_id, Entity.Content)
        self.assertEqual(content, returned_content)

    @skip('Unable to test in swagger UI!')
    def test_editing_content(self):
        httpretty.register_uri(
            httpretty.PUT,
            self.create_url(Entity.Files, self.entity_id, Entity.Content),
            status=204
        )

        self.client.edit(
            Entity.Files, self.entity_id, Entity.Content, payload='hey')

    def test_getting_files_with_filtering(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(Entity.Files),
            body=open('tests/json/get_files_filtering.json').read(),
            content_type="application/json; charset=utf-8")
        r = self.client.get(
            Entity.Files, search_terms={'title__startswith': 'Y'})
        self.assertEqual(len(r), 6)
class TestFiles(TestCase, EntityTestCase):
    entity = Entity.Files
    entity_id = '4ab3bb32-3e72-11e4-bfaa-ebeae41148db'
    entity_count = 45
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_getting_content(self):
        # TODO: There is a better way to do this.
        returned_content = open('tests/files/get_file', 'rb').read()
        httpretty.register_uri(httpretty.GET,
                               self.create_url(Entity.Files, self.entity_id,
                                               Entity.Content),
                               body=returned_content)

        content = self.client.get(Entity.Files, self.entity_id, Entity.Content)
        self.assertEqual(content, returned_content)

    @skip('Unable to test in swagger UI!')
    def test_editing_content(self):
        httpretty.register_uri(httpretty.PUT,
                               self.create_url(Entity.Files, self.entity_id,
                                               Entity.Content),
                               status=204)

        self.client.edit(Entity.Files,
                         self.entity_id,
                         Entity.Content,
                         payload='hey')

    def test_getting_files_with_filtering(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(Entity.Files),
            body=open('tests/json/get_files_filtering.json').read(),
            content_type="application/json; charset=utf-8")
        r = self.client.get(Entity.Files,
                            search_terms={'title__startswith': 'Y'})
        self.assertEqual(len(r), 6)
class TestContacts(TestCase, EntityTestCase):
    entity = Entity.Contacts
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 11
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_get_contact_files(self):
        """ GET /api/v2/contacts/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Files),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    def test_get_contact_projects(self):
        """ GET /api/v2/contacts/{id}/projects/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Projects),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Projects)
        self.assertEqual(len(entities), 0)

    def test_get_contact_tasks(self):
        """ GET /api/v2/contacts/{id}/tasks/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Tasks),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Tasks)
        self.assertEqual(len(entities), 0)
class TestContacts(TestCase, EntityTestCase):
    entity = Entity.Contacts
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 11
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_get_contact_files(self):
        """ GET /api/v2/contacts/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Files),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    def test_get_contact_projects(self):
        """ GET /api/v2/contacts/{id}/projects/ """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Projects),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id,
                                   Entity.Projects)
        self.assertEqual(len(entities), 0)

    def test_get_contact_tasks(self):
        """ GET /api/v2/contacts/{id}/tasks/ """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Tasks),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Tasks)
        self.assertEqual(len(entities), 0)
class TestValuelist(TestCase, EntityTestCase):
    entity = Entity.Valuelist
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 49
    skip_list = ['create', 'edit', 'get', 'delete']

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_getting_valuelist_by_name(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, 'templates_labels'),
            body=open('tests/json/get_valuelist_by_name.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, 'templates_labels')
        self.assertEqual(len(entities['objects'][0]['entries']), 28)
class TestValuelist(TestCase, EntityTestCase):
    entity = Entity.Valuelist
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 49
    skip_list = ['create', 'edit', 'get', 'delete']

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_getting_valuelist_by_name(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, 'templates_labels'),
            body=open('tests/json/get_valuelist_by_name.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, 'templates_labels')
        self.assertEqual(len(entities['objects'][0]['entries']), 28)
class TestNav(TestCase, EntityTestCase):
    entity = Entity.Nav
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 1
    skip_list = ['create', 'edit', 'get', 'delete']

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    @skip('Seems broken in the API itself')
    def test_getting_by_name(self):
        name = 'awesome_name'
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, name),
                               body=open('tests/json/get_all_nav.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, name)
        self.assertEqual(len(entities['objects'][0]['entries']), 1)
class TestUsers(TestCase, EntityTestCase):
    entity = Entity.Users
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 9
    skip_list = ['create', 'edit', 'get', 'delete']
    username = '******'

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_get_users_by_username(self):
        """ GET /api/v2/users/{username}/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username),
            body=open('tests/json/get_single_users.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username),
        self.assertEqual(len(entities), 1)
class TestNav(TestCase, EntityTestCase):
    entity = Entity.Nav
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 1
    skip_list = ['create', 'edit', 'get', 'delete']

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    @skip('Seems broken in the API itself')
    def test_getting_by_name(self):
        name = 'awesome_name'
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, name),
            body=open('tests/json/get_all_nav.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, name)
        self.assertEqual(len(entities['objects'][0]['entries']), 1)
class TestUsers(TestCase, EntityTestCase):
    entity = Entity.Users
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 9
    skip_list = ['create', 'edit', 'get', 'delete']
    username = '******'

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_get_users_by_username(self):
        """ GET /api/v2/users/{username}/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username),
            body=open('tests/json/get_single_users.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username),
        self.assertEqual(len(entities), 1)
 def setUp(self):
     self.client = CoredataClient(
         host=self.host, auth=(self.username, self.password))
class TestUser(TestCase, EntityTestCase):
    entity = Entity.User
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 1
    skip_list = ['create', 'edit', 'get', 'delete']
    username = '******'

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_get_user_by_username(self):
        """ GET /api/v2/user/{username}/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username),
            body=open('tests/json/get_single_user.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username),
        self.assertEqual(len(entities), 1)

    def test_get_user_files(self):
        """ GET /api/v2/user/{username}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.username,
                                               Entity.Files),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_user_files_templates(self):
        """ GET /api/v2/user/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.username,
                                               Entity.Files, 'templates'),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Files,
                                   'templates')
        self.assertEqual(len(entities), 0)

    def test_get_user_tasks(self):
        """ GET /api/v2/user/{username}/tasks/ """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.username,
                                               Entity.Tasks),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Tasks)
        self.assertEqual(len(entities), 0)

    def test_get_user_projects(self):
        """ GET /api/v2/user/{username}/projects/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username, Entity.Projects),
            body=open('tests/json/get_user_projects.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Projects)
        self.assertEqual(len(entities), 6)
class TestProjects(TestCase, EntityTestCase):
    """
    Unit tests for /projects/ endpoint.
    """
    entity = Entity.Projects
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 20
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_get_project_files(self):
        """ GET /api/v2/projects/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Files),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_project_file_templates(self):
        """ GET /api/v2/projects/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(
                self.entity, self.entity_id, Entity.Files, 'templates'),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Files, 'templates')
        self.assertEqual(len(entities), 0)

    def test_get_project_tasks(self):
        """ GET /api/v2/project/{id}/tasks/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.entity_id, Entity.Tasks),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Tasks)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_project_tasks_templates(self):
        """ GET /api/v2/project/{id}/tasks/templates """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(
                self.entity, self.entity_id, Entity.Tasks, 'templates'),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.entity_id, Entity.Tasks, 'templates')
        self.assertEqual(len(entities), 0)

    def test_getting_projects_with_filtering(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(Entity.Projects),
            body=open('tests/json/get_projects_filtered.json').read(),
            content_type="application/json; charset=utf-8")
        r = self.client.get(
            Entity.Projects, search_terms={'title__startswith': 'Y'})
        self.assertEqual(len(r), 1)
class TestProjects(TestCase, EntityTestCase):
    """
    Unit tests for /projects/ endpoint.
    """
    entity = Entity.Projects
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 20
    skip_list = []

    def setUp(self):
        self.client = CoredataClient(host=self.host,
                                     auth=(self.username, self.password))

    def test_get_project_files(self):
        """ GET /api/v2/projects/{id}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Files),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_project_file_templates(self):
        """ GET /api/v2/projects/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Files, 'templates'),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Files,
                                   'templates')
        self.assertEqual(len(entities), 0)

    def test_get_project_tasks(self):
        """ GET /api/v2/project/{id}/tasks/ """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Tasks),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Tasks)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_project_tasks_templates(self):
        """ GET /api/v2/project/{id}/tasks/templates """
        httpretty.register_uri(httpretty.GET,
                               self.create_url(self.entity, self.entity_id,
                                               Entity.Tasks, 'templates'),
                               body=open('tests/json/empty.json').read(),
                               content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.entity_id, Entity.Tasks,
                                   'templates')
        self.assertEqual(len(entities), 0)

    def test_getting_projects_with_filtering(self):
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(Entity.Projects),
            body=open('tests/json/get_projects_filtered.json').read(),
            content_type="application/json; charset=utf-8")
        r = self.client.get(Entity.Projects,
                            search_terms={'title__startswith': 'Y'})
        self.assertEqual(len(r), 1)
class TestUser(TestCase, EntityTestCase):
    entity = Entity.User
    entity_id = 'f24203a0-3d8b-11e4-8e77-7ba23226dee9'
    entity_count = 1
    skip_list = ['create', 'edit', 'get', 'delete']
    username = '******'

    def setUp(self):
        self.client = CoredataClient(
            host=self.host, auth=(self.username, self.password))

    def test_get_user_by_username(self):
        """ GET /api/v2/user/{username}/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username),
            body=open('tests/json/get_single_user.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username),
        self.assertEqual(len(entities), 1)

    def test_get_user_files(self):
        """ GET /api/v2/user/{username}/files/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username, Entity.Files),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Files)
        self.assertEqual(len(entities), 0)

    @skip('Client doesn\'t support sub-sub-entities yet')
    def test_get_user_files_templates(self):
        """ GET /api/v2/user/{id}/files/templates/ """
        # TODO: Get some better data here.
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(
                self.entity, self.username, Entity.Files, 'templates'),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(
            self.entity, self.username, Entity.Files, 'templates')
        self.assertEqual(len(entities), 0)

    def test_get_user_tasks(self):
        """ GET /api/v2/user/{username}/tasks/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username, Entity.Tasks),
            body=open('tests/json/empty.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Tasks)
        self.assertEqual(len(entities), 0)

    def test_get_user_projects(self):
        """ GET /api/v2/user/{username}/projects/ """
        httpretty.register_uri(
            httpretty.GET,
            self.create_url(self.entity, self.username, Entity.Projects),
            body=open('tests/json/get_user_projects.json').read(),
            content_type="application/json; charset=utf-8")
        entities = self.client.get(self.entity, self.username, Entity.Projects)
        self.assertEqual(len(entities), 6)
 def test_init(self):
     CoredataClient(host='derp://example.coredata.is',
                    auth=('username', 'password'))
 def setUp(self):
     self.client = CoredataClient(host=self.host,
                                  auth=(self.username, self.password))

def get_padding(key, results):
    """ Gets the length of the longest property in results """
    return len(sorted([x[key] for x in results], key=len, reverse=True)[0])

try:
    username = os.environ['COREDATA_USERNAME']
    password = os.environ['COREDATA_PASSWORD']
except KeyError:
    print ('You need to set your Coredata username and passwords as the '
           'environ variables: COREDATA_USERNAME and COREDATA_PASSWORD '
           'respectivly.')
    sys.exit(1)

client = CoredataClient(
    host='https://azazo.coredata.is', auth=(username, password))

search_terms = {'title': sys.argv[1]} if len(sys.argv) > 1 else None
contacts = client.get(Entity.Contacts, search_terms=search_terms)

results = [{'name': contact['title'],
            'phones': ', '.join([x['number'] for x in contact['phones']]),
            'emails': ', '.join([x['email'] for x in contact['emails']])}
           for contact in contacts]

title_padding = get_padding('name', results)
phone_padding = get_padding('phones', results)
email_padding = get_padding('emails', results)

for contact in results:
    print(u'{name} | {phones} | {emails}'.format(