Exemple #1
0
 def test_apibase_instantiation(self):
     controller = '10.10.10.10'
     token = XAuthToken('10.10.10.10', 'sdn', 'skyline')
     rest_client = RestClient(token)
     apibase = ApiBase(controller, rest_client)
     self.assertEqual(apibase.controller, controller)
     self.assertEqual(apibase.rest_client, rest_client)
 def setUp(self):
     self.auth = XAuthToken("10.10.10.10", "sdn", "skyline")
     self.client = RestClient(self.auth)
     response_ok = requests.Response()
     response_ok.status_code = 200
     self.response_ok = response_ok
class RestClientTests(unittest.TestCase):
    def setUp(self):
        self.auth = XAuthToken("10.10.10.10", "sdn", "skyline")
        self.client = RestClient(self.auth)
        response_ok = requests.Response()
        response_ok.status_code = 200
        self.response_ok = response_ok

    def test_restclient_instantiation(self):
        self.assertEqual(self.client.args["auth"], self.auth)
        self.assertEqual(self.client.args["headers"], UA)
        self.assertEqual(self.client.args["verify"], False)
        self.assertEqual(self.client.args["timeout"], 30)

    def test_user_agent_string(self):
        exp = "^(hpsdnclient/[0-9]\\.[0-9]\\.[0-9] " + "python-requests/[0-9]\\.[0-9]\\.[0-9])$"
        self.assertTrue(re.search(exp, UA["user-agent"], re.S))

    def test__download_args(self):
        args = self.client._download_args()
        self.assertEqual(args["headers"]["content-type"], "application/zip")
        self.assertEqual(self.client.args["headers"]["content-type"], "application/json")
        self.assertEquals(args["timeout"], 60)
        self.assertEquals(args["stream"], True)

    def test__upload_args(self):
        filename = "test.txt"
        args = self.client._upload_args(filename)
        self.assertEqual(args["headers"]["content-type"], "application/zip")
        self.assertEqual(self.client.args["headers"]["content-type"], "application/json")
        self.assertEquals(args["headers"]["Filename"], filename)
        self.assertEquals(args["timeout"], 60)

    @httpretty.activate
    def test__get_json(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.GET, "http://foo.bar", status=200)

        response = self.client._get("http://foo.bar", False)

        self.assertEqual(response.request.headers["content-type"], "application/json")

    @httpretty.activate
    def test__get_file(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.GET, "http://foo.bar", status=200)

        response = self.client._get("http://foo.bar", True)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.request.headers["content-type"], "application/zip")

    @httpretty.activate
    def test__put(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.PUT, "http://foo.bar", status=201)

        response = self.client._put("http://foo.bar", json.dumps({"some": "data"}))

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/json")
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__post_json(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.POST, "http://foo.bar", status=201)

        response = self.client._post("http://foo.bar", json.dumps({"some": "data"}), False)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/json")
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__post_file(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.POST, "http://foo.bar", status=201)

        f = open("test.txt", "wb")
        f.close()

        response = self.client._post("http://foo.bar", "test.txt", True)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/zip")
        self.assertEqual(response.request.headers["filename"], "test.txt")

        os.remove("test.txt")

    @httpretty.activate
    def test__delete_no_data(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.DELETE, "http://foo.bar", status=201)

        response = self.client._delete("http://foo.bar")

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/json")

    @httpretty.activate
    def test__delete_with_data(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.DELETE, "http://foo.bar", status=201)

        response = self.client._delete("http://foo.bar", json.dumps({"some": "data"}))

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/json")
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__head(self):
        httpretty.register_uri(httpretty.POST, "https://10.10.10.10:8443/sdn/v2.0/auth", body=AUTH, status=201)
        httpretty.register_uri(httpretty.HEAD, "http://foo.bar", status=201)

        response = self.client._head("http://foo.bar")

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers["content-type"], "application/json")

    def test_get_json_valid_datatype(self):
        data = json.dumps({"version": "1.0.0", "datapath": DATAPATH})
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers["content-type"] = "application/json"
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get("http://foo.bar")

        self.client._get.assert_called_with("http://foo.bar")
        self.assertTrue(isinstance(r, Datapath))

    def test_get_json_valid_datatypes(self):
        data = json.dumps({"version": "1.0.0", "datapaths": [DATAPATH, DATAPATH]})
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers["content-type"] = "application/json"
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get("http://foo.bar")

        self.client._get.assert_called_with("http://foo.bar")
        self.assertTrue(isinstance(r, list))
        for item in r:
            self.assertTrue(isinstance(item, Datapath))

    def test_get_json_invalid_datatype(self):
        data = json.dumps({"version": "1.0.0", "datapathz": DATAPATH})
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers["content-type"] = "application/json"
        self.client._get = MagicMock(name="_get", return_value=response)

        self.assertRaises(NotFound, self.client.get, "http://foo.bar")

    def test_get_file(self):
        with open("test.txt", "wb") as f:
            f.write("Hello World!".encode("UTF-8"))
            f.flush()
            f.close()

        response = requests.Response()
        response.raw = io.open("test.txt")
        response.status_code = 201
        response.headers["content-type"] = "application/zip"
        response.headers["content-disposition"] = "attachment; filename=test1.txt"
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get("http://foo.bar", is_file=True)

        self.client._get.assert_called_with("http://foo.bar", is_file=True)
        self.assertEqual(r, "test1.txt")
        f = open("test1.txt", "rb")
        self.assertEqual(f.read().decode("UTF-8"), "Hello World!")
        f.close()
        os.remove("test.txt")
        os.remove("test1.txt")

    def test_get_none(self):
        response = requests.Response()
        response.status_code = 201
        response.headers["Content-Type"] = "application/none"
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get("http://foo.bar")

        self.client._get.assert_called_with("http://foo.bar")
        self.assertTrue(r is None)

    def test_post(self):
        self.client._post = MagicMock(name="_post", return_value=self.response_ok)

        r = self.client.post("http://foo.bar", json.dumps({"some": "data"}))

        self.client._post.assert_called_with("http://foo.bar", json.dumps({"some": "data"}), False)

        self.assertTrue(isinstance(r, requests.Response))

    def test_put(self):
        self.client._put = MagicMock(name="_put", return_value=self.response_ok)

        r = self.client.put("http://foo.bar", json.dumps({"some": "data"}))

        self.client._put.assert_called_with("http://foo.bar", json.dumps({"some": "data"}))

        self.assertTrue(isinstance(r, requests.Response))

    def test_delete_data(self):
        self.client._delete = MagicMock(name="_delete", return_value=self.response_ok)

        r = self.client.delete("http://foo.bar", json.dumps({"some": "data"}))

        self.client._delete.assert_called_with("http://foo.bar", json.dumps({"some": "data"}))

        self.assertTrue(isinstance(r, requests.Response))

    def test_delete_no_data(self):
        self.client._delete = MagicMock(name="_delete", return_value=self.response_ok)

        r = self.client.delete("http://foo.bar")

        self.client._delete.assert_called_with("http://foo.bar", None)

        self.assertTrue(isinstance(r, requests.Response))

    def test_head(self):
        self.client._head = MagicMock(name="_head", return_value=self.response_ok)
        # self.raise_errors = MagicMock(name="raise_errors")

        r = self.client.head("http://foo.bar")

        self.client._head.assert_called_with("http://foo.bar")

        self.assertTrue(isinstance(r, requests.Response))
Exemple #4
0
 def setUp(self):
     self.auth = XAuthToken('10.10.10.10', 'sdn', 'skyline')
     self.client = RestClient(self.auth)
     response_ok = requests.Response()
     response_ok.status_code = 200
     self.response_ok = response_ok
 def setUp(self):
     self.auth = XAuthToken('10.10.10.10', 'sdn', 'skyline')
     self.client = RestClient(self.auth)
     response_ok = requests.Response()
     response_ok.status_code = 200
     self.response_ok = response_ok
class RestClientTests(unittest.TestCase):
    def setUp(self):
        self.auth = XAuthToken('10.10.10.10', 'sdn', 'skyline')
        self.client = RestClient(self.auth)
        response_ok = requests.Response()
        response_ok.status_code = 200
        self.response_ok = response_ok

    def test_restclient_instantiation(self):
        self.assertEqual(self.client.args["auth"], self.auth)
        self.assertEqual(self.client.args["headers"], UA)
        self.assertEqual(self.client.args["verify"], False)
        self.assertEqual(self.client.args['timeout'], 30)

    def test_user_agent_string(self):
        exp = ("^(hpsdnclient/[0-9]\\.[0-9]\\.[0-9] " +
               "python-requests/[0-9]\\.[0-9]\\.[0-9])$")
        self.assertTrue(re.search(exp, UA['user-agent'], re.S))

    def test__download_args(self):
        args = self.client._download_args()
        self.assertEqual(args['headers']['content-type'], 'application/zip')
        self.assertEqual(self.client.args['headers']['content-type'],
                         'application/json')
        self.assertEquals(args["timeout"], 60)
        self.assertEquals(args["stream"], True)

    def test__upload_args(self):
        filename = "test.txt"
        args = self.client._upload_args(filename)
        self.assertEqual(args['headers']['content-type'], 'application/zip')
        self.assertEqual(self.client.args['headers']['content-type'],
                         'application/json')
        self.assertEquals(args["headers"]["Filename"], filename)
        self.assertEquals(args["timeout"], 60)

    @httpretty.activate
    def test__get_json(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.GET, 'http://foo.bar', status=200)

        response = self.client._get('http://foo.bar', False)

        self.assertEqual(response.request.headers['content-type'],
                         'application/json')

    @httpretty.activate
    def test__get_file(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.GET, 'http://foo.bar', status=200)

        response = self.client._get('http://foo.bar', True)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.request.headers['content-type'],
                         'application/zip')

    @httpretty.activate
    def test__put(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.PUT, 'http://foo.bar', status=201)

        response = self.client._put('http://foo.bar',
                                    json.dumps({"some": "data"}))

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/json')
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__post_json(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.POST, 'http://foo.bar', status=201)

        response = self.client._post('http://foo.bar',
                                     json.dumps({"some": "data"}), False)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/json')
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__post_file(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.POST, 'http://foo.bar', status=201)

        f = open("test.txt", "wb")
        f.close()

        response = self.client._post('http://foo.bar', "test.txt", True)

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/zip')
        self.assertEqual(response.request.headers['filename'], 'test.txt')

        os.remove("test.txt")

    @httpretty.activate
    def test__delete_no_data(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.DELETE, 'http://foo.bar', status=201)

        response = self.client._delete('http://foo.bar')

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/json')

    @httpretty.activate
    def test__delete_with_data(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.DELETE, 'http://foo.bar', status=201)

        response = self.client._delete('http://foo.bar',
                                       json.dumps({"some": "data"}))

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/json')
        self.assertEqual(response.request.body, json.dumps({"some": "data"}))

    @httpretty.activate
    def test__head(self):
        httpretty.register_uri(httpretty.POST,
                               'https://10.10.10.10:8443/sdn/v2.0/auth',
                               body=AUTH,
                               status=201)
        httpretty.register_uri(httpretty.HEAD, 'http://foo.bar', status=201)

        response = self.client._head('http://foo.bar')

        self.assertTrue(isinstance(response, requests.Response))
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.request.headers['content-type'],
                         'application/json')

    def test_get_json_valid_datatype(self):
        data = json.dumps({"version": "1.0.0", "datapath": DATAPATH})
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers['content-type'] = 'application/json'
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get('http://foo.bar')

        self.client._get.assert_called_with('http://foo.bar')
        self.assertTrue(isinstance(r, Datapath))

    def test_get_json_valid_datatypes(self):
        data = json.dumps({
            "version": "1.0.0",
            "datapaths": [DATAPATH, DATAPATH]
        })
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers['content-type'] = 'application/json'
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get('http://foo.bar')

        self.client._get.assert_called_with('http://foo.bar')
        self.assertTrue(isinstance(r, list))
        for item in r:
            self.assertTrue(isinstance(item, Datapath))

    def test_get_json_invalid_datatype(self):
        data = json.dumps({"version": "1.0.0", "datapathz": DATAPATH})
        response = requests.Response()
        response._content = data.encode("UTF-8")
        response.status_code = 201
        response.headers['content-type'] = 'application/json'
        self.client._get = MagicMock(name="_get", return_value=response)

        self.assertRaises(NotFound, self.client.get, 'http://foo.bar')

    def test_get_file(self):
        with open("test.txt", "wb") as f:
            f.write("Hello World!".encode("UTF-8"))
            f.flush()
            f.close()

        response = requests.Response()
        response.raw = io.open("test.txt")
        response.status_code = 201
        response.headers['content-type'] = 'application/zip'
        response.headers[
            'content-disposition'] = 'attachment; filename=test1.txt'
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get('http://foo.bar', is_file=True)

        self.client._get.assert_called_with('http://foo.bar', is_file=True)
        self.assertEqual(r, 'test1.txt')
        f = open('test1.txt', 'rb')
        self.assertEqual(f.read().decode("UTF-8"), "Hello World!")
        f.close()
        os.remove('test.txt')
        os.remove('test1.txt')

    def test_get_none(self):
        response = requests.Response()
        response.status_code = 201
        response.headers['Content-Type'] = 'application/none'
        self.client._get = MagicMock(name="_get", return_value=response)

        r = self.client.get('http://foo.bar')

        self.client._get.assert_called_with('http://foo.bar')
        self.assertTrue(r is None)

    def test_post(self):
        self.client._post = MagicMock(name="_post",
                                      return_value=self.response_ok)

        r = self.client.post('http://foo.bar', json.dumps({"some": "data"}))

        self.client._post.assert_called_with('http://foo.bar',
                                             json.dumps({"some": "data"}),
                                             False)

        self.assertTrue(isinstance(r, requests.Response))

    def test_put(self):
        self.client._put = MagicMock(name="_put",
                                     return_value=self.response_ok)

        r = self.client.put('http://foo.bar', json.dumps({"some": "data"}))

        self.client._put.assert_called_with('http://foo.bar',
                                            json.dumps({"some": "data"}))

        self.assertTrue(isinstance(r, requests.Response))

    def test_delete_data(self):
        self.client._delete = MagicMock(name="_delete",
                                        return_value=self.response_ok)

        r = self.client.delete('http://foo.bar', json.dumps({"some": "data"}))

        self.client._delete.assert_called_with('http://foo.bar',
                                               json.dumps({"some": "data"}))

        self.assertTrue(isinstance(r, requests.Response))

    def test_delete_no_data(self):
        self.client._delete = MagicMock(name="_delete",
                                        return_value=self.response_ok)

        r = self.client.delete('http://foo.bar')

        self.client._delete.assert_called_with('http://foo.bar', None)

        self.assertTrue(isinstance(r, requests.Response))

    def test_head(self):
        self.client._head = MagicMock(name="_head",
                                      return_value=self.response_ok)
        #self.raise_errors = MagicMock(name="raise_errors")

        r = self.client.head('http://foo.bar')

        self.client._head.assert_called_with('http://foo.bar')

        self.assertTrue(isinstance(r, requests.Response))
Exemple #7
0
 def __init__(self, controller, auth):
     self.restclient = RestClient(auth)
     super(Api, self).__init__(controller, self.restclient)