def setUp(self):
     super(FIOioControlConnectionTests, self).setUp()
     self.configuration = create_configuration()
     self.ctxt = context.get_admin_context()
     return_text = json.dumps({"Version": FIOconnection.APIVERSION})
     get_return = FIOFakeResponse(code=200,
                                  text=return_text)
     requests.get = mock.Mock(return_value=get_return)
     self.conn = FIOconnection(self.configuration.san_ip,
                               self.configuration.san_login,
                               self.configuration.san_password,
                               self.configuration.fusionio_iocontrol_retry,
                               (self.configuration.
                                fusionio_iocontrol_verify_cert),)
Example #2
0
 def setUp(self):
     super(FIOioControlConnectionTests, self).setUp()
     self.configuration = create_configuration()
     self.ctxt = context.get_admin_context()
     return_text = json.dumps({"Version": FIOconnection.APIVERSION})
     get_return = FIOFakeResponse(code=200,
                                  text=return_text)
     requests.get = mock.Mock(return_value=get_return)
     self.conn = FIOconnection(self.configuration.san_ip,
                               self.configuration.san_login,
                               self.configuration.san_password,
                               self.configuration.fusionio_iocontrol_retry,
                               (self.configuration.
                                fusionio_iocontrol_verify_cert),)
Example #3
0
class FIOioControlConnectionTests(test.TestCase):

    VERSION = '1.0.0'
    fakeSessionID = '12345678'

    def setUp(self):
        super(FIOioControlConnectionTests, self).setUp()
        self.configuration = create_configuration()
        self.ctxt = context.get_admin_context()
        return_text = json.dumps({"Version": FIOconnection.APIVERSION})
        get_return = FIOFakeResponse(code=200,
                                     text=return_text)
        requests.get = mock.Mock(return_value=get_return)
        self.conn = FIOconnection(self.configuration.san_ip,
                                  self.configuration.san_login,
                                  self.configuration.san_password,
                                  self.configuration.fusionio_iocontrol_retry,
                                  (self.configuration.
                                   fusionio_iocontrol_verify_cert),)

    def test_conn_init_sucess(self):
        expected = [mock.call(url=("https://" +
                                   self.configuration.san_ip +
                                   "/AUTH/Version"),
                              headers=self.conn.defhdrs,
                              verify=True)]
        requests.get.assert_has_calls(expected)

    def test_wrong_version(self):
        expected = json.dumps({"Version": (FIOconnection.APIVERSION + ".1")})
        get_return = FIOFakeResponse(code=200,
                                     text=expected)
        requests.get = mock.Mock(return_value=get_return)
        self.assertRaises(exception.VolumeDriverException,
                          FIOconnection,
                          self.configuration.san_ip,
                          self.configuration.san_login,
                          self.configuration.san_password,
                          self.configuration.fusionio_iocontrol_retry,
                          self.configuration.fusionio_iocontrol_verify_cert,)

    def test_create_session_sucess(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": 1}))
        requests.post = mock.Mock(return_value=post_return)
        requests.put = mock.Mock(return_value=put_return)
        result = self.conn._create_session()
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        assert result == expectedhdr

    def test_create_session_auth_fail(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": (-1)}))
        requests.post = mock.Mock(return_value=post_return)
        requests.put = mock.Mock(return_value=put_return)
        requests.delete = mock.Mock()
        self.assertRaises(exception.VolumeDriverException,
                          self.conn._create_session,)

    def test_delete_session_sucess(self):
        requests.delete = mock.Mock(return_value=True)
        hdrs = copy.deepcopy(self.conn.defhdrs)
        hdrs["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._delete_session(hdrs)
        expected = [mock.call(url=("https://" +
                                   self.configuration.san_ip +
                                   "/AUTH/SESSION/" + self.fakeSessionID),
                              headers=self.conn.defhdrs,
                              verify=True), ]
        requests.delete.assert_has_calls(expected)

    def test_put_sucess(self):
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": 1}))
        requests.put = mock.Mock(return_value=put_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        testcontent = {'testdict': 'testvalue'}
        self.conn.put(testurl, testcontent)
        self.conn.post(testurl, testcontent)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              data=json.dumps(testcontent, sort_keys=True),
                              headers=expectedhdr, verify=True), ]
        requests.put.assert_has_calls(expected)

    def test_post_sucess(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        requests.post = mock.Mock(return_value=post_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        testcontent = {'testdict': 'testvalue'}
        self.conn.post(testurl, testcontent)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              data=json.dumps(testcontent, sort_keys=True),
                              headers=expectedhdr, verify=True), ]
        requests.post.assert_has_calls(expected)

    def test_delete_sucess(self):
        del_return = FIOFakeResponse(code=201, text=json.dumps({}))
        requests.delete = mock.Mock(return_value=del_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        self.conn.delete(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.delete.assert_has_calls(expected)

    def test_get_sucess(self):
        get_return = FIOFakeResponse(code=200,
                                     text=json.dumps(basic_acl_group_response))
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        result = self.conn.get(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)
        assert result == basic_acl_group_response

    def test_get_bad_json_once(self):
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        expected_text = json.dumps(basic_acl_group_response)
        jsonErrEffect = [FIOFakeResponse(code=200,
                                         text='{"badjson":"bad",,}'),
                         FIOFakeResponse(code=200,
                                         text=expected_text)]
        requests.get = mock.Mock(side_effect=jsonErrEffect)
        testurl = '/test/url/'
        result = self.conn.get(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)
        assert result == basic_acl_group_response

    def test_get_bad_json_retry_expire(self):
        get_return = FIOFakeResponse(code=200, text='{"badjson":"bad",,}')
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        self.assertRaises(exception.VolumeDriverException,
                          self.conn.get, testurl)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True),
                    mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True),
                    mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)

    def test_get_failed_http_response(self):
        get_return = FIOFakeResponse(code=404,
                                     text=json.dumps(basic_acl_group_response))
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        self.assertRaises(requests.exceptions.HTTPError,
                          self.conn.get, testurl)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)
class FIOioControlConnectionTests(test.TestCase):

    VERSION = '1.0.0'
    fakeSessionID = '12345678'

    def setUp(self):
        super(FIOioControlConnectionTests, self).setUp()
        self.configuration = create_configuration()
        self.ctxt = context.get_admin_context()
        return_text = json.dumps({"Version": FIOconnection.APIVERSION})
        get_return = FIOFakeResponse(code=200,
                                     text=return_text)
        requests.get = mock.Mock(return_value=get_return)
        self.conn = FIOconnection(self.configuration.san_ip,
                                  self.configuration.san_login,
                                  self.configuration.san_password,
                                  self.configuration.fusionio_iocontrol_retry,
                                  (self.configuration.
                                   fusionio_iocontrol_verify_cert),)

    def test_conn_init_sucess(self):
        expected = [mock.call(url=("https://" +
                                   self.configuration.san_ip +
                                   "/AUTH/Version"),
                              headers=self.conn.defhdrs,
                              verify=True)]
        requests.get.assert_has_calls(expected)

    def test_wrong_version(self):
        expected = json.dumps({"Version": (FIOconnection.APIVERSION + ".1")})
        get_return = FIOFakeResponse(code=200,
                                     text=expected)
        requests.get = mock.Mock(return_value=get_return)
        self.assertRaises(exception.VolumeDriverException,
                          FIOconnection,
                          self.configuration.san_ip,
                          self.configuration.san_login,
                          self.configuration.san_password,
                          self.configuration.fusionio_iocontrol_retry,
                          self.configuration.fusionio_iocontrol_verify_cert,)

    def test_create_session_sucess(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": 1}))
        requests.post = mock.Mock(return_value=post_return)
        requests.put = mock.Mock(return_value=put_return)
        result = self.conn._create_session()
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        assert result == expectedhdr

    def test_create_session_auth_fail(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": (-1)}))
        requests.post = mock.Mock(return_value=post_return)
        requests.put = mock.Mock(return_value=put_return)
        requests.delete = mock.Mock()
        self.assertRaises(exception.VolumeDriverException,
                          self.conn._create_session,)

    def test_delete_session_sucess(self):
        requests.delete = mock.Mock(return_value=True)
        hdrs = copy.deepcopy(self.conn.defhdrs)
        hdrs["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._delete_session(hdrs)
        expected = [mock.call(url=("https://" +
                                   self.configuration.san_ip +
                                   "/AUTH/SESSION/" + self.fakeSessionID),
                              headers=self.conn.defhdrs,
                              verify=True), ]
        requests.delete.assert_has_calls(expected)

    def test_put_sucess(self):
        put_return = FIOFakeResponse(code=201,
                                     text=json.dumps({"Status": 1}))
        requests.put = mock.Mock(return_value=put_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        testcontent = {'testdict': 'testvalue'}
        self.conn.put(testurl, testcontent)
        self.conn.post(testurl, testcontent)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              data=json.dumps(testcontent, sort_keys=True),
                              headers=expectedhdr, verify=True), ]
        requests.put.assert_has_calls(expected)

    def test_post_sucess(self):
        expected_text = json.dumps({"id": self.fakeSessionID})
        post_return = FIOFakeResponse(code=201,
                                      text=expected_text)
        requests.post = mock.Mock(return_value=post_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        testcontent = {'testdict': 'testvalue'}
        self.conn.post(testurl, testcontent)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              data=json.dumps(testcontent, sort_keys=True),
                              headers=expectedhdr, verify=True), ]
        requests.post.assert_has_calls(expected)

    def test_delete_sucess(self):
        del_return = FIOFakeResponse(code=201, text=json.dumps({}))
        requests.delete = mock.Mock(return_value=del_return)
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        testurl = '/test/url/'
        self.conn.delete(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.delete.assert_has_calls(expected)

    def test_get_sucess(self):
        get_return = FIOFakeResponse(code=200,
                                     text=json.dumps(basic_acl_group_response))
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        result = self.conn.get(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)
        assert result == basic_acl_group_response

    def test_get_bad_json_once(self):
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        expected_text = json.dumps(basic_acl_group_response)
        jsonErrEffect = [FIOFakeResponse(code=200,
                                         text='{"badjson":"bad",,}'),
                         FIOFakeResponse(code=200,
                                         text=expected_text)]
        requests.get = mock.Mock(side_effect=jsonErrEffect)
        testurl = '/test/url/'
        result = self.conn.get(testurl,)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)
        assert result == basic_acl_group_response

    def test_get_bad_json_retry_expire(self):
        get_return = FIOFakeResponse(code=200, text='{"badjson":"bad",,}')
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        self.assertRaises(exception.VolumeDriverException,
                          self.conn.get, testurl)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True),
                    mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True),
                    mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)

    def test_get_failed_http_response(self):
        get_return = FIOFakeResponse(code=404,
                                     text=json.dumps(basic_acl_group_response))
        expectedhdr = copy.deepcopy(self.conn.defhdrs)
        expectedhdr["Cookie"] = 'session=' + self.fakeSessionID
        self.conn._create_session = mock.Mock(return_value=expectedhdr)
        self.conn._delete_session = mock.Mock()
        requests.get = mock.Mock(return_value=get_return)
        testurl = '/test/url/'
        self.assertRaises(requests.exceptions.HTTPError,
                          self.conn.get, testurl)
        expected = [mock.call(), ]
        self.conn._create_session.assert_has_calls(expected)
        expected = [mock.call(expectedhdr), ]
        self.conn._delete_session.assert_has_calls(expected)
        expected = [mock.call(url=self.conn._complete_uri(testurl),
                              headers=expectedhdr, verify=True), ]
        requests.get.assert_has_calls(expected)