def test_ul_answer_s6a_error(self): """ Test that gRPC UpdateLocation response with S6a error triggers Diameter ULA error response """ state_id = 1 user_name = '1' visited_plmn_id = b'(Y' ulr_flags = 1 << 2 | 1 << 5 req = self._update_location_req(user_name, visited_plmn_id, ulr_flags) # Encode request message into buffer req_buf = bytearray(req.length) req.encode(req_buf, 0) result_info = avp.AVP('Experimental-Result', [ avp.AVP('Vendor-Id', 10415), avp.AVP('Experimental-Result-Code', avp.ResultCode.DIAMETER_ERROR_USER_UNKNOWN) ]) resp = self._server._s6a_manager._gen_response( state_id, req, avp.ResultCode.DIAMETER_ERROR_USER_UNKNOWN, [result_info]) resp_buf = bytearray(resp.length) resp.encode(resp_buf, 0) result = UpdateLocationAnswer( error_code=ErrorCode.Value('USER_UNKNOWN'), ) result_future = unittest.mock.Mock() result_future.exception.side_effect = [None] result_future.result.side_effect = [result] self._server._s6a_manager._relay_update_location_answer( state_id, req, result_future, 0) self._writes.assert_called_once_with(resp_buf) self._writes.reset_mock()
def test_auth_answer_s6a_error(self): """ Tests that we convert gRPC AuthenticationInformation with non-zero ErrorCode to Diameter AIA with error response """ state_id = 1 user_name = '1' visited_plmn_id = b'(Y' num_request_vectors = 1 immediate_response_preferred = True resync_info = b'123456789' result_info = avp.AVP('Experimental-Result', [ avp.AVP('Vendor-Id', 10415), avp.AVP('Experimental-Result-Code', avp.ResultCode.DIAMETER_ERROR_USER_UNKNOWN) ]) req = self._auth_req(user_name, visited_plmn_id, num_request_vectors, immediate_response_preferred, resync_info) resp = self._server._s6a_manager._gen_response( state_id, req, avp.ResultCode.DIAMETER_ERROR_USER_UNKNOWN, [result_info]) resp_buf = bytearray(resp.length) resp.encode(resp_buf, 0) result = AuthenticationInformationAnswer( error_code=ErrorCode.Value('USER_UNKNOWN'), ) result_future = unittest.mock.Mock() result_future.exception.side_effect = [None] result_future.result.side_effect = [result] self._server._s6a_manager._relay_auth_answer(state_id, req, result_future, 0) self._writes.assert_called_once_with(resp_buf) self._writes.reset_mock()