def onTextMessage(self,messageProtocolEntity): name = messageProtocolEntity.getNotify() text = messageProtocolEntity.getBody() sender = messageProtocolEntity.getFrom() textmsg = TextMessageProtocolEntity if messageProtocolEntity.getFrom(False): resp = Response() answer = resp.getResp(text,name,sender) if answer and answer.strip(): if sender.lower().find("-") == -1: self.toLower(textmsg(answer, to = sender )) print "\nMensagem pessoal" print str(answer) else: self.toLower(textmsg(answer, to = sender )) print "\nMensagem grupo" print str(answer) else: answer = "Oi "+name+", o comando não esta na lista de respostas.\n" print sender + "\n" print text + "\n" if sender.lower().find("-") == -1: time.sleep(1) self.toLower(textmsg(answer, to = sender)) print answer else: print answer
def test_optional_json_attrs(self): add( Response( responses.GET, url=f"{ENDPOINT}site_info", json=SITE_INFO_RESPONSE_WITHOUT_OPTIONS, ) ) add( Response( responses.GET, url=f"{ENDPOINT}site_info", json=SITE_INFO_RESPONSE_WITH_OPTIONS, ) ) site_info = self.powerwall.get_site_info() self.assertEqual(site_info.has_optional_attrs_set(), False) self.assertEqual(site_info.has_key("utility"), False) self.assertEqual(site_info.grid_voltage_setting, 230) self.assertEqual(site_info.has_optional_attrs(), True) site_info = self.powerwall.get_site_info() self.assertEqual(site_info.has_optional_attrs_set(), True) self.assertEqual(site_info.has_key("utility"), True) self.assertEqual(site_info.retailer, "*")
def run(): responses.add( Response(method=responses.GET, url="http://example.com/one")) with pytest.raises(ValueError) as excinfo: responses.replace( Response(method=responses.GET, url="http://example.com/two")) assert "Response is not registered for URL http://example.com/two" in str( excinfo.value)
def test_retry(self): with open('tests/data/accounts_balances.json', 'r') as file: response_body = json.loads(file.read()) url = 'https://demo-api.ig.com/gateway/deal/accounts' headers = {'CST': 'abc123', 'X-SECURITY-TOKEN': 'xyz987'} api_exceeded = { 'errorCode': 'error.public-api.exceeded-api-key-allowance' } account_exceeded = { 'errorCode': 'error.public-api.exceeded-account-allowance' } trading_exceeded = { 'errorCode': 'error.public-api.exceeded-account-trading-allowance' } responses.add( Response(method='GET', url=url, headers={}, json=api_exceeded, status=403)) responses.add( Response(method='GET', url=url, headers={}, json=account_exceeded, status=403)) responses.add( Response(method='GET', url=url, headers={}, json=trading_exceeded, status=403)) responses.add( Response(method='GET', url=url, headers=headers, json=response_body, status=200)) ig_service = IGService( 'username', 'password', 'api_key', 'DEMO', retryer=Retrying( wait=tenacity.wait_exponential(), retry=tenacity.retry_if_exception_type(ApiExceededException))) result = ig_service.fetch_accounts() assert responses.assert_call_count(url, 4) is True assert isinstance(result, pd.DataFrame) assert result.iloc[0]['accountId'] == 'XYZ987'
def test_meter(self): add( Response( responses.GET, url=f"{ENDPOINT}meters/aggregates", json=METERS_AGGREGATES_RESPONSE, ))
def test_get_backup_reserved_percentage(self): add( Response(responses.GET, url=f"{ENDPOINT}operation", json=OPERATION_RESPONSE)) self.assertEqual(self.powerwall.get_backup_reserve_percentage(), 5.000019999999999)
def test_get_operation_mode(self): add( Response(responses.GET, url=f"{ENDPOINT}operation", json=OPERATION_RESPONSE)) self.assertEqual(self.powerwall.get_operation_mode(), OperationMode.SELF_CONSUMPTION)
def changeDBType(req): buttons = [["Yes", "No"]] text = "Don't find the field you entered. Dou you want to make more changes in df_type?" context = [{ "name": 'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/Fieldsynonyms-followup', "lifespanCount": 2 }, { "name": 'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/ChangeDB_Type-field-followup', "lifespanCount": 0 }, { "name": 'projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/ChangeDB_Type-followup', "lifespanCount": 0 }] type = req.dbType data = getUserData(req.user) for f in data.db.table.fields: if f.name == req.fieldname: if type == 'varchar': f.db_meta = 'varchar(20)' elif type == 'decimal': f.db_meta = 'decimal(10,8)' else: f.db_meta = type text = 'Changed.\nDou you want to make more changes in db_type?' break r = response.Response(text, None, buttons, [], context) res = r.response return res
def askForSynonyms(model): text = None context = [] image = None buttons = [] field = getFirstFieldWithoutSynonyms(model.db.table) if field is None: text = "Done. This table is already complete.\nThe model created is as follow.\nDo you want to make some changes in DB_Type? (yes/no).\n\nNOTE: DB_Type is the type of fields in database." context = [{ "name": "projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/csvpath-followup", "lifespanCount": 0 }] buttons = [['Yes', 'No']] p = puml.Plantuml(model) idPlantumlImage = p.getPlantumlImage() image = endPointImages + idPlantumlImage else: text = u'Ok, now I need you tell me the synonyms for "' + str( field.name) + u'" field \nHere a sample of data stored in "' + str( field.name) + u'" field: ' + str(field.values[0]) + ', ' + str( field.values[1]) + u', ' + str( field.values[2] ) + u'.\n\nNOTE: separate synonyms with commas.' context = [{ "name": "projects/initbot-svhgjk/agent/sessions/8c5eec04-72b3-63cc-3e36-238695a1aa35/contexts/csvpath-followup", "lifespanCount": 2 }] r = response.Response(text, image, buttons, [], context) res = r.response return res
def test_get_serial_numbers(self): add( Response(responses.GET, url=f"{ENDPOINT}powerwalls", json=POWERWALLS_RESPONSE)) serial_numbers = self.powerwall.get_serial_numbers() self.assertEqual(serial_numbers, ["SerialNumber1", "SerialNumber2"])
def test_get_grid_status(self): add( Response(responses.GET, url=f"{ENDPOINT}system_status/grid_status", json=GRID_STATUS_RESPONSE)) grid_status = self.powerwall.get_grid_status() self.assertEqual(grid_status, GridStatus.CONNECTED)
def ask_extraInfo(): text = 'The field to ask for maps is saved. Do you want add extra data in maps?' buttons = [["Yes", "No"]] r = response.Response(text, None, buttons, [], None) res = r.response return res
def test_get_charge(self): add( Response( GET, url=f"{ENDPOINT}system_status/soe", json={"percentage": 53.123423} ) ) self.assertEqual(self.powerwall.get_charge(), 53) self.assertEqual(self.powerwall.get_charge(rounded=False), 53.123423)
def test_is_grid_services_active(self): add( Response( responses.GET, url=f"{ENDPOINT}system_status/grid_status", json=GRID_STATUS_RESPONSE, )) self.assertEqual(self.powerwall.is_grid_services_active(), False)
def handle_request(self, request): response = Response() handler = self.routes.get(request.path) if handler is not None: handler(request, response) else: self.default_response(response) return response
def test_get_device_type(self): add( Response(responses.GET, url=f"{ENDPOINT}status", json=STATUS_RESPONSE)) device_type = self.powerwall.get_device_type() self.assertIsInstance(device_type, DeviceType) self.assertEqual(device_type, DeviceType.GW1)
def make_post_client_credentials() -> Response: return Response(method='POST', url='https://accounts.spotify.com/api/token', json={ 'access_token': 'MockSpotifyAccessToken', 'token_type': 'bearer', 'expires_in': 3600 })
def test_send__when_responded_OK__should_set_status_as_delivered(self): self.mocked_responses.add(Response(method='POST', url=self.endpoint)) use_case = SendMessageToForeignUseCase(self.endpoint) use_case.send(self.message) assert self.message.status == MessageStatus.DELIVERED assert len(self.mocked_responses.calls) == 1 assert self.mocked_responses.calls[ 0].request.body == b'{"receiver": "AU"}'
def test_detect_and_pin_version(self): add( Response(responses.GET, url=f"{ENDPOINT}status", json=STATUS_RESPONSE)) vers = version.LooseVersion("1.50.1") pw = Powerwall(ENDPOINT) self.assertEqual(pw.detect_and_pin_version(), vers) self.assertEqual(pw._pin_version, vers)
def test_get_site_info(self): add( Response(responses.GET, url=f"{ENDPOINT}site_info", json=SITE_INFO_RESPONSE)) site_info = self.powerwall.get_site_info() self.assertEqual(site_info.nominal_system_energy, 27) self.assertEqual(site_info.site_name, "test") self.assertEqual(site_info.timezone, "Europe/Berlin")
def make_listen_response(id: str, song_id: str, listen_time_utc: str, song_provider: str) -> Response: return Response(method='GET', url=f'https://micro.morningcd.com/listens/{id}', json={ 'id': id, 'song_id': song_id, 'listen_time_utc': listen_time_utc, 'song_provider': song_provider })
def tablename_intent(req): # get model by username data = getUserData(req.user) # create table and add to user data data.db.table = table.Table(req.tablename, '', None) # generate response text = "Ok, saved!\nNow I need the csv url of '" + req.tablename + "' table." r = response.Response(text, None, [], [], None) res = r.response return res
def showButtonsToChooseType(req, type): text = 'Choose the new type.' buttons = [] if type == 'DB_Type': buttons = [['date'], ['integer'], ['varchar'], ['decimal']] else: buttons = [['number'], ['date'], ['url'], ['phone-number'], ['custom']] r = response.Response(text, None, buttons, [], None) res = r.response return res
def test_process_message__when_not_delivered__should_try_to_deliver(self): self.mocked_responses.add(Response(method='POST', url=self.endpoint)) use_case = ProcessMessageUseCase(self.channel_repo, self.channel_queue_repo, self.endpoint) self.client.post(url_for('views.post_message'), json=self.message_data) use_case.execute() assert len(self.mocked_responses.calls) == 1 assert self.mocked_responses.calls[ 0].request.body == b'{"obj": "QmQtYtUS7K1AdKjbuMsmPmPGDLaKL38M5HYwqxW9RKW49n", "predicate": "UN.CEFACT.Trade.CertificateOfOrigin.created", "receiver": "CN", "sender": "AU", "subject": "AU.abn0000000000.XXXX-XXXXX-XXXXX-XXXXXX"}'
def askForMaps_intent(req): text = 'You can find the final model in the following image.\n\nNow I need some info in order to create maps.\nDo your csv have fields with coordinates X and Y (longitude and latitude)? (yes/no).' buttons = [["Yes", "No"]] data = getUserData(req.user) p = puml.Plantuml(data) idPlantumlImage = p.getPlantumlImage() image = endPointImages + idPlantumlImage r = response.Response(text, image, buttons, [], None) res = r.response return res
def ask_valueMap(data): text = 'Good! The coordinates are saved.\n\nNow I need you tell me the field to ask for maps. Choose the field with the following buttons.' inline = [] for f in data.db.table.fields: inline.append([{ 'text': f.name, 'callback_data': 'valueMap is ' + f.name }]) r = response.Response(text, None, [], inline, None) res = r.response return res
def make_response(self): valid_resourse = validate_path(unquote(self.resource), self.root_dir) if not valid_resourse: logging.info('Requested file is not allowed or not exist') return NOTFOUND_RESPONSE return Response(code=OK, content=valid_resourse.read_bytes() if self.method == 'GET' else None, lengt=valid_resourse.stat().st_size, mime_type=MIME_TYPES.get(valid_resourse.suffix[1:]), method=self.method)
def dbName_intent(req): global persistData # create model db = database.DataBase(req.dbname, None) data = userdata.UserData(req.user, db, None) # save data save_data(data) # create response text = "Saved!\nNow tell me the name of the table you want add to the database." r = response.Response(text, None, [], [], None) res = r.response return res
def test_is_sending(self): add( Response(responses.GET, url=f"{ENDPOINT}meters/aggregates", json=METERS_AGGREGATES_RESPONSE)) meters = self.powerwall.get_meters() self.assertEqual(meters.solar.is_sending_to(), False) self.assertEqual(meters.solar.is_active(), True) self.assertEqual(meters.solar.is_drawing_from(), True) self.assertEqual(meters.site.is_sending_to(), True) self.assertEqual(meters.load.is_sending_to(), True) self.assertEqual(meters.load.is_drawing_from(), False) self.assertEqual(meters.load.is_active(), True)
def test_get_meters(self): add( Response(responses.GET, url=f"{ENDPOINT}meters/aggregates", json=METERS_AGGREGATES_RESPONSE)) meters = self.powerwall.get_meters() self.assertIsInstance(meters, MetersAggregates) self.assertIsInstance(meters.site, Meter) self.assertIsInstance(meters.solar, Meter) self.assertIsInstance(meters.battery, Meter) self.assertIsInstance(meters.load, Meter) self.assertIsInstance(meters.get_meter(MeterType.SOLAR), Meter)