def test_set_arduino_board(self, mock_settings): mock_settings.return_value.arduino_board = None self.assertIsNone(ServerCompilerSettings().arduino_board) returned_board = actions.set_arduino_board('Uno') self.assertEqual(returned_board, 'Uno')
def handle_settings(parameters): def _get_value(parameters2): """ Searches for a 'value' parameter in the dictionary. """ value2 = None for key2 in parameters2: if str(key2) == 'value': value2 = str(parameters2[key2]) return value2 message_back = None for key in parameters: # Compiler if str(key) == 'compiler': if str(parameters[key]) == "['get']": message_back = actions.get_compiler_path() elif str(parameters[key]) == "['set']": message_back = actions.set_compiler_path() # Sketch elif str(key) == 'sketch': if str(parameters[key]) == "['get']": message_back = actions.get_sketch_path() elif str(parameters[key]) == "['set']": message_back = actions.set_sketch_path() # Arduino Board elif str(key) == 'board': if str(parameters[key]) == "['get']": message_back = actions.get_arduino_boards() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_arduino_board(value) # Serial port elif str(key) == 'serial': if str(parameters[key]) == "['get']": message_back = actions.get_serial_ports() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_serial_port(value) # Launch Only Options elif str(key) == 'ide': if str(parameters[key]) == "['get']": message_back = actions.get_load_ide_only() elif str(parameters[key]) == "['set']": value = _get_value(parameters) value = re.sub(r'^\[\'', '', value) value = re.sub(r'\'\]', '', value) message_back = actions.set_load_ide_only(value) # The Value parameter is only used in some cases elif str(key) == 'value': pass # Parameter not recognised else: print('The "' + str(key) + '" = ' + str(parameters[key]) + ' parameter is not recognised!') return message_back
def test_set_arduino_board_invalid(self): old_board = self.settings.arduino_board invalid_board = 'this is not a valid value' self.assertNotEqual(old_board, invalid_board) returned_board = actions.set_arduino_board(invalid_board) self.assertEqual(returned_board, old_board) self.assertNotEqual(returned_board, invalid_board) self.assertEqual(ServerCompilerSettings().arduino_board, old_board)
def handler_settings_update_individual(name): """Handle the POST setting requests. Error codes: 63 - Unexpected setting type to update. 64 - Unable to parse sent JSON. 65 - JSON received does not have 'new_value' key. 66 - Invalid value. 67 - New value could not be set. :param name: Setting value to retrieve. :return: JSON string with the formed response. """ response_dict = {'response_type': 'settings', 'response_state': 'full_response', 'settings_type': name} try: new_value = request.json['new_value'] except (TypeError, ValueError): response_dict.update({ 'success': False, 'errors': [{ 'id': 64, 'description': 'Unable to parse sent JSON.' }] }) except KeyError: response_dict.update({ 'success': False, 'errors': [{ 'id': 65, 'description': 'JSON received does not have \'new_value\' key.' }] }) else: if not new_value: response_dict.update({ 'success': False, 'errors': [{ 'id': 66, 'description': 'Invalid value.' }] }) else: options = None set_value = None if name == 'compiler': set_value = actions.set_compiler_path(new_value) elif name == 'sketch': set_value = actions.set_sketch_path(new_value) elif name == 'board': set_value = actions.set_arduino_board(new_value) options = [{'value': board, 'display_text': board} for board in actions.get_arduino_boards()] elif name == 'serial': set_value = actions.set_serial_port(new_value) options = [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_serial_ports())] elif name == 'ide': set_value = actions.set_load_ide_only(new_value) options = [{'value': k, 'display_text': v} for k, v in iteritems(actions.get_load_ide_options())] else: response_dict.update({'success': False, 'settings_type': 'invalid'}) response_dict.setdefault('errors', []).append({ 'id': 63, 'description': 'Unexpected setting type to update.' }) # Check if sent value was set, might have been expanded in Settings if set_value in new_value: response_dict.update({ 'success': True, 'selected': set_value }) if options: response_dict.update({'options': options}) else: response_dict.update({'success': False}) response_dict.setdefault('errors', []).append({ 'id': 67, 'description': 'New value could not be set.' }) set_header_no_cache() return response_dict