class JinxClientTest(unittest.TestCase):
    def setUp(self):
        self.client= JinxClient()

    def test_request(self):
        rack = self.client.get_rack_contents("c2-02-16")
        self.assertEquals(type(rack), list)

    def test_api_exceptions(self):
        self.assertRaises(JinxInvalidRequestError, self.client.get_rack_contents, 1, 2)
        self.assertRaises(JinxDataNotFoundError, self.client.get_rack_contents, ("fail"))
        self.assertRaises(NameError, self.client.some_fake_api_call, ("fail"))

    def test_auth_hdrs(self):
        self.assertEquals(self.client.auth_hdr, None)
        rack = self.client.get_rack_contents("c2-02-16")
        self.assertNotEquals(self.client.auth_hdr, None)
        
    def test_expired_auth_hdrs(self):
        self.client.auth_hdr = "invalid header"
        rack = self.client.get_rack_contents("c2-02-16")
        self.assertNotEquals(self.client.auth_hdr, "invalid header")

    def test_list_api_calls(self):
        pass

    def test_api_docstring(self):
        output = StringIO()
        sys.stdout = output

        self.client.help("get_rack_contents")
        sys.stdout = sys.__stdout__
        self.assertNotEquals(output,"")

        sys.stdout = output
        self.client.auth_hdr = "invalid header"
        self.client.help("get_rack_contents")
        self.assertNotEquals(self.client.auth_hdr, None)
        sys.stdout = sys.__stdout__

    def test_docstring_exceptions(self):
        self.assertRaises(NameError, self.client.help, ("fail"))
        self.assertRaises(JinxInvalidRequestError, self.client.help, (object))
 def setUp(self):
     self.client= JinxClient()