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),)
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)