How to use notify method in devicefarmer-stf

Best JavaScript code snippet using devicefarmer-stf

tasks.py

Source:tasks.py Github

copy

Full Screen

...344 total_nums = response_list['increment_trades_get_response']['total_results']345 if total_nums > 0:346 notify_list = response_list['increment_trades_get_response']['notify_trades']['notify_trade']347 for notify in notify_list:348 TradeNotify.save_and_post_notify(notify)349 cur_nums = cur_page * settings.TAOBAO_PAGE_SIZE * 2350 has_next = cur_nums < total_nums351 cur_page += 1352 except Exception, exc:353 raise process_trade_interval_notify_task.retry(exc=exc, countdown=60)354 else:355 if not update_handler:356 user.trade_notify_updated = updated357 user.save()358############################ 批量下载商品主动消息处理 ###############################359@app.task(max_retries=3)360def process_item_interval_notify_task(user_id, update_from=None, update_to=None):361 update_handler = update_from and update_to362 try:363 user = User.objects.get(visitor_id=user_id)364 if not update_handler:365 update_from = user.trade_notify_updated366 dt = datetime.datetime.now()367 update_to = dt if dt.day == update_from.day else \368 datetime.datetime(update_from.year, update_from.month, update_from.day, 23, 59, 59)369 updated = dt if dt.day == update_from.day else \370 datetime.datetime(dt.year, dt.month, dt.day, 0, 0, 0)371 nick = user.nick372 update_from = update_from.strftime('%Y-%m-%d %H:%M:%S')373 update_to = update_to.strftime('%Y-%m-%d %H:%M:%S')374 has_next = True375 cur_page = 1376 while has_next:377 response_list = apis.taobao_increment_items_get(tb_user_id=user_id, nick=nick, page_no=cur_page378 , page_size=settings.TAOBAO_PAGE_SIZE * 2,379 start_modified=update_from, end_modified=update_to)380 total_nums = response_list['increment_items_get_response']['total_results']381 if total_nums > 0:382 notify_list = response_list['increment_items_get_response']['notify_items']['notify_item']383 for notify in notify_list:384 ItemNotify.save_and_post_notify(notify)385 cur_nums = cur_page * settings.TAOBAO_PAGE_SIZE * 2386 has_next = cur_nums < total_nums387 cur_page += 1388 except Exception, exc:389 raise process_item_interval_notify_task.retry(exc=exc, countdown=60)390 else:391 if not update_handler:392 user.item_notify_updated = updated393 user.save()394############################ 批量下载退款主动消息处理 ###############################395@app.task(max_retries=3)396def process_refund_interval_notify_task(user_id, update_from=None, update_to=None):397 update_handler = update_from and update_to398 try:399 user = User.objects.get(visitor_id=user_id)400 if not update_handler:401 update_from = user.trade_notify_updated402 dt = datetime.datetime.now()403 update_to = dt if dt.day == update_from.day else \404 datetime.datetime(update_from.year, update_from.month, update_from.day, 23, 59, 59)405 updated = dt if dt.day == update_from.day else \406 datetime.datetime(dt.year, dt.month, dt.day, 0, 0, 0)407 nick = user.nick408 update_from = update_from.strftime('%Y-%m-%d %H:%M:%S')409 update_to = update_to.strftime('%Y-%m-%d %H:%M:%S')410 has_next = True411 cur_page = 1412 while has_next:413 response_list = apis.taobao_increment_refunds_get(tb_user_id=user_id, nick=nick, page_no=cur_page414 , page_size=settings.TAOBAO_PAGE_SIZE * 2,415 start_modified=update_from, end_modified=update_to)416 total_nums = response_list['increment_refunds_get_response']['total_results']417 if total_nums > 0:418 notify_list = response_list['increment_refunds_get_response']['notify_refunds']['notify_refund']419 for notify in notify_list:420 RefundNotify.save_and_post_notify(notify)421 cur_nums = cur_page * settings.TAOBAO_PAGE_SIZE * 2422 has_next = cur_nums < total_nums423 cur_page += 1424 except Exception, exc:425 raise process_refund_interval_notify_task.retry(exc=exc, countdown=60)426 else:427 if not update_handler:428 user.refund_notify_updated = updated429 user.save()430############################ 增量订单主动消息处理 ###############################431@app.task432def process_trade_increment_notify_task():433 users = User.objects.all()434 for user in users:...

Full Screen

Full Screen

test_notify.py

Source:test_notify.py Github

copy

Full Screen

1"""Test the HMAC-based One Time Password (MFA) auth module."""2import asyncio3from unittest.mock import patch4from homeassistant import data_entry_flow5from homeassistant.auth import auth_manager_from_config, models as auth_models6from homeassistant.auth.mfa_modules import auth_mfa_module_from_config7from homeassistant.components.notify import NOTIFY_SERVICE_SCHEMA8from tests.common import MockUser, async_mock_service9MOCK_CODE = "123456"10MOCK_CODE_2 = "654321"11async def test_validating_mfa(hass):12 """Test validating mfa code."""13 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})14 await notify_auth_module.async_setup_user("test-user", {"notify_service": "dummy"})15 with patch("pyotp.HOTP.verify", return_value=True):16 assert await notify_auth_module.async_validate("test-user", {"code": MOCK_CODE})17async def test_validating_mfa_invalid_code(hass):18 """Test validating an invalid mfa code."""19 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})20 await notify_auth_module.async_setup_user("test-user", {"notify_service": "dummy"})21 with patch("pyotp.HOTP.verify", return_value=False):22 assert (23 await notify_auth_module.async_validate("test-user", {"code": MOCK_CODE})24 is False25 )26async def test_validating_mfa_invalid_user(hass):27 """Test validating an mfa code with invalid user."""28 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})29 await notify_auth_module.async_setup_user("test-user", {"notify_service": "dummy"})30 assert (31 await notify_auth_module.async_validate("invalid-user", {"code": MOCK_CODE})32 is False33 )34async def test_validating_mfa_counter(hass):35 """Test counter will move only after generate code."""36 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})37 await notify_auth_module.async_setup_user(38 "test-user", {"counter": 0, "notify_service": "dummy"}39 )40 async_mock_service(hass, "notify", "dummy")41 assert notify_auth_module._user_settings42 notify_setting = list(notify_auth_module._user_settings.values())[0]43 init_count = notify_setting.counter44 assert init_count is not None45 with patch("pyotp.HOTP.at", return_value=MOCK_CODE):46 await notify_auth_module.async_initialize_login_mfa_step("test-user")47 notify_setting = list(notify_auth_module._user_settings.values())[0]48 after_generate_count = notify_setting.counter49 assert after_generate_count != init_count50 with patch("pyotp.HOTP.verify", return_value=True):51 assert await notify_auth_module.async_validate("test-user", {"code": MOCK_CODE})52 notify_setting = list(notify_auth_module._user_settings.values())[0]53 assert after_generate_count == notify_setting.counter54 with patch("pyotp.HOTP.verify", return_value=False):55 assert (56 await notify_auth_module.async_validate("test-user", {"code": MOCK_CODE})57 is False58 )59 notify_setting = list(notify_auth_module._user_settings.values())[0]60 assert after_generate_count == notify_setting.counter61async def test_setup_depose_user(hass):62 """Test set up and despose user."""63 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})64 await notify_auth_module.async_setup_user("test-user", {})65 assert len(notify_auth_module._user_settings) == 166 await notify_auth_module.async_setup_user("test-user", {})67 assert len(notify_auth_module._user_settings) == 168 await notify_auth_module.async_depose_user("test-user")69 assert len(notify_auth_module._user_settings) == 070 await notify_auth_module.async_setup_user("test-user2", {"secret": "secret-code"})71 assert len(notify_auth_module._user_settings) == 172async def test_login_flow_validates_mfa(hass):73 """Test login flow with mfa enabled."""74 hass.auth = await auth_manager_from_config(75 hass,76 [77 {78 "type": "insecure_example",79 "users": [{"username": "test-user", "password": "test-pass"}],80 }81 ],82 [{"type": "notify"}],83 )84 user = MockUser(85 id="mock-user", is_owner=False, is_active=False, name="Paulus"86 ).add_to_auth_manager(hass.auth)87 await hass.auth.async_link_user(88 user,89 auth_models.Credentials(90 id="mock-id",91 auth_provider_type="insecure_example",92 auth_provider_id=None,93 data={"username": "test-user"},94 is_new=False,95 ),96 )97 notify_calls = async_mock_service(98 hass, "notify", "test-notify", NOTIFY_SERVICE_SCHEMA99 )100 await hass.auth.async_enable_user_mfa(101 user, "notify", {"notify_service": "test-notify"}102 )103 provider = hass.auth.auth_providers[0]104 result = await hass.auth.login_flow.async_init((provider.type, provider.id))105 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM106 result = await hass.auth.login_flow.async_configure(107 result["flow_id"], {"username": "incorrect-user", "password": "test-pass"}108 )109 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM110 assert result["errors"]["base"] == "invalid_auth"111 result = await hass.auth.login_flow.async_configure(112 result["flow_id"], {"username": "test-user", "password": "incorrect-pass"}113 )114 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM115 assert result["errors"]["base"] == "invalid_auth"116 with patch("pyotp.HOTP.at", return_value=MOCK_CODE):117 result = await hass.auth.login_flow.async_configure(118 result["flow_id"], {"username": "test-user", "password": "test-pass"}119 )120 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM121 assert result["step_id"] == "mfa"122 assert result["data_schema"].schema.get("code") == str123 # wait service call finished124 await hass.async_block_till_done()125 assert len(notify_calls) == 1126 notify_call = notify_calls[0]127 assert notify_call.domain == "notify"128 assert notify_call.service == "test-notify"129 message = notify_call.data["message"]130 message.hass = hass131 assert MOCK_CODE in message.async_render()132 with patch("pyotp.HOTP.verify", return_value=False):133 result = await hass.auth.login_flow.async_configure(134 result["flow_id"], {"code": "invalid-code"}135 )136 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM137 assert result["step_id"] == "mfa"138 assert result["errors"]["base"] == "invalid_code"139 # wait service call finished140 await hass.async_block_till_done()141 # would not send new code, allow user retry142 assert len(notify_calls) == 1143 # retry twice144 with patch("pyotp.HOTP.verify", return_value=False), patch(145 "pyotp.HOTP.at", return_value=MOCK_CODE_2146 ):147 result = await hass.auth.login_flow.async_configure(148 result["flow_id"], {"code": "invalid-code"}149 )150 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM151 assert result["step_id"] == "mfa"152 assert result["errors"]["base"] == "invalid_code"153 # after the 3rd failure, flow abort154 result = await hass.auth.login_flow.async_configure(155 result["flow_id"], {"code": "invalid-code"}156 )157 assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT158 assert result["reason"] == "too_many_retry"159 # wait service call finished160 await hass.async_block_till_done()161 # restart login162 result = await hass.auth.login_flow.async_init((provider.type, provider.id))163 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM164 with patch("pyotp.HOTP.at", return_value=MOCK_CODE):165 result = await hass.auth.login_flow.async_configure(166 result["flow_id"], {"username": "test-user", "password": "test-pass"}167 )168 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM169 assert result["step_id"] == "mfa"170 assert result["data_schema"].schema.get("code") == str171 # wait service call finished172 await hass.async_block_till_done()173 assert len(notify_calls) == 2174 notify_call = notify_calls[1]175 assert notify_call.domain == "notify"176 assert notify_call.service == "test-notify"177 message = notify_call.data["message"]178 message.hass = hass179 assert MOCK_CODE in message.async_render()180 with patch("pyotp.HOTP.verify", return_value=True):181 result = await hass.auth.login_flow.async_configure(182 result["flow_id"], {"code": MOCK_CODE}183 )184 assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY185 assert result["data"].id == "mock-id"186async def test_setup_user_notify_service(hass):187 """Test allow select notify service during mfa setup."""188 notify_calls = async_mock_service(hass, "notify", "test1", NOTIFY_SERVICE_SCHEMA)189 async_mock_service(hass, "notify", "test2", NOTIFY_SERVICE_SCHEMA)190 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})191 services = notify_auth_module.aync_get_available_notify_services()192 assert services == ["test1", "test2"]193 flow = await notify_auth_module.async_setup_flow("test-user")194 step = await flow.async_step_init()195 assert step["type"] == data_entry_flow.RESULT_TYPE_FORM196 assert step["step_id"] == "init"197 schema = step["data_schema"]198 schema({"notify_service": "test2"})199 with patch("pyotp.HOTP.at", return_value=MOCK_CODE):200 step = await flow.async_step_init({"notify_service": "test1"})201 assert step["type"] == data_entry_flow.RESULT_TYPE_FORM202 assert step["step_id"] == "setup"203 # wait service call finished204 await hass.async_block_till_done()205 assert len(notify_calls) == 1206 notify_call = notify_calls[0]207 assert notify_call.domain == "notify"208 assert notify_call.service == "test1"209 message = notify_call.data["message"]210 message.hass = hass211 assert MOCK_CODE in message.async_render()212 with patch("pyotp.HOTP.at", return_value=MOCK_CODE_2):213 step = await flow.async_step_setup({"code": "invalid"})214 assert step["type"] == data_entry_flow.RESULT_TYPE_FORM215 assert step["step_id"] == "setup"216 assert step["errors"]["base"] == "invalid_code"217 # wait service call finished218 await hass.async_block_till_done()219 assert len(notify_calls) == 2220 notify_call = notify_calls[1]221 assert notify_call.domain == "notify"222 assert notify_call.service == "test1"223 message = notify_call.data["message"]224 message.hass = hass225 assert MOCK_CODE_2 in message.async_render()226 with patch("pyotp.HOTP.verify", return_value=True):227 step = await flow.async_step_setup({"code": MOCK_CODE_2})228 assert step["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY229async def test_include_exclude_config(hass):230 """Test allow include exclude config."""231 async_mock_service(hass, "notify", "include1", NOTIFY_SERVICE_SCHEMA)232 async_mock_service(hass, "notify", "include2", NOTIFY_SERVICE_SCHEMA)233 async_mock_service(hass, "notify", "exclude1", NOTIFY_SERVICE_SCHEMA)234 async_mock_service(hass, "notify", "exclude2", NOTIFY_SERVICE_SCHEMA)235 async_mock_service(hass, "other", "include3", NOTIFY_SERVICE_SCHEMA)236 async_mock_service(hass, "other", "exclude3", NOTIFY_SERVICE_SCHEMA)237 notify_auth_module = await auth_mfa_module_from_config(238 hass, {"type": "notify", "exclude": ["exclude1", "exclude2", "exclude3"]}239 )240 services = notify_auth_module.aync_get_available_notify_services()241 assert services == ["include1", "include2"]242 notify_auth_module = await auth_mfa_module_from_config(243 hass, {"type": "notify", "include": ["include1", "include2", "include3"]}244 )245 services = notify_auth_module.aync_get_available_notify_services()246 assert services == ["include1", "include2"]247 # exclude has high priority than include248 notify_auth_module = await auth_mfa_module_from_config(249 hass,250 {251 "type": "notify",252 "include": ["include1", "include2", "include3"],253 "exclude": ["exclude1", "exclude2", "include2"],254 },255 )256 services = notify_auth_module.aync_get_available_notify_services()257 assert services == ["include1"]258async def test_setup_user_no_notify_service(hass):259 """Test setup flow abort if there is no available notify service."""260 async_mock_service(hass, "notify", "test1", NOTIFY_SERVICE_SCHEMA)261 notify_auth_module = await auth_mfa_module_from_config(262 hass, {"type": "notify", "exclude": "test1"}263 )264 services = notify_auth_module.aync_get_available_notify_services()265 assert services == []266 flow = await notify_auth_module.async_setup_flow("test-user")267 step = await flow.async_step_init()268 assert step["type"] == data_entry_flow.RESULT_TYPE_ABORT269 assert step["reason"] == "no_available_service"270async def test_not_raise_exception_when_service_not_exist(hass):271 """Test login flow will not raise exception when notify service error."""272 hass.auth = await auth_manager_from_config(273 hass,274 [275 {276 "type": "insecure_example",277 "users": [{"username": "test-user", "password": "test-pass"}],278 }279 ],280 [{"type": "notify"}],281 )282 user = MockUser(283 id="mock-user", is_owner=False, is_active=False, name="Paulus"284 ).add_to_auth_manager(hass.auth)285 await hass.auth.async_link_user(286 user,287 auth_models.Credentials(288 id="mock-id",289 auth_provider_type="insecure_example",290 auth_provider_id=None,291 data={"username": "test-user"},292 is_new=False,293 ),294 )295 await hass.auth.async_enable_user_mfa(296 user, "notify", {"notify_service": "invalid-notify"}297 )298 provider = hass.auth.auth_providers[0]299 result = await hass.auth.login_flow.async_init((provider.type, provider.id))300 assert result["type"] == data_entry_flow.RESULT_TYPE_FORM301 with patch("pyotp.HOTP.at", return_value=MOCK_CODE):302 result = await hass.auth.login_flow.async_configure(303 result["flow_id"], {"username": "test-user", "password": "test-pass"}304 )305 assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT306 assert result["reason"] == "unknown_error"307 # wait service call finished308 await hass.async_block_till_done()309async def test_race_condition_in_data_loading(hass):310 """Test race condition in the data loading."""311 counter = 0312 async def mock_load(_):313 """Mock homeassistant.helpers.storage.Store.async_load."""314 nonlocal counter315 counter += 1316 await asyncio.sleep(0)317 notify_auth_module = await auth_mfa_module_from_config(hass, {"type": "notify"})318 with patch("homeassistant.helpers.storage.Store.async_load", new=mock_load):319 task1 = notify_auth_module.async_validate("user", {"code": "value"})320 task2 = notify_auth_module.async_validate("user", {"code": "value"})321 results = await asyncio.gather(task1, task2, return_exceptions=True)322 assert counter == 1323 assert results[0] is False...

Full Screen

Full Screen

test_notify_csv.py

Source:test_notify_csv.py Github

copy

Full Screen

...16 notify = mock.MagicMock()17 notify.send = mock.MagicMock()18 notify.admin_send = mock.MagicMock()19 with TempFile(data, suffix='.csv') as csv:20 with global_notify(notify):21 meta = parse(csv)22 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)23 assert meta['data_type'] == 'GENERAL'24 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))25 assert not notify.admin_send.called26def test_parse_with_invalid_csv():27 # Since we accept text columns, we presume that strings appear to be errors28 # only if it's less than 10% of them in a column. Hence it can be tested29 # only on a dataset with minimum 11 columns, where one contains string.30 #31 data = '1 2 3 4\n1 2 3 4\n5 6 a 8\n7 6 5 2\n8 8 8 8\n2 2 3 9\n5 6 7 8\n12 13 45 56\n12 43 6 7\n9 9 9 0\n1 2 5 0\n'32 log = """33 Parsing CSV with whitespace (tab) as delimiter.34 Found 4 fields in first row, assume all the rows have this number of fields.35 Parsing...36 Analyzing data...37 No header found, first row contains data.38 Found 1 row with invalid values:39 - row 3, column 340 Found 10 samples.41 """42 notify = mock.MagicMock()43 notify.send = mock.MagicMock()44 notify.admin_send = mock.MagicMock()45 with TempFile(data, suffix='.csv') as csv:46 with global_notify(notify):47 parse(csv)48 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)49 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))50 assert not notify.admin_send.called51def test_parse_with_invalid_csv_with_null_bytes():52 data = "1 2 3 4\n1 2 3 4\n5 6 \\x00 8\n7 6 5 2\n8 8 8 8\n2 2 3 9\n5 6 7 8\n12 13 45 56\n12 43 6 7\n9 9 9 0\n1 2 5 0\n"53 log = """54 Parsing CSV with whitespace (tab) as delimiter.55 Found 4 fields in first row, assume all the rows have this number of fields.56 Parsing...57 Analyzing data...58 No header found, first row contains data.59 Found 1 row with invalid values:60 - row 3, column 361 Found 10 samples.62 """63 notify = mock.MagicMock()64 notify.send = mock.MagicMock()65 notify.admin_send = mock.MagicMock()66 with TempFile(data, suffix='.csv') as csv:67 with global_notify(notify):68 parse(csv)69 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)70 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))71 assert not notify.admin_send.called72def test_parse_with_invalid_csv_other_file_type():73 data = '%PDF-1.4\n'74 log = """75 CSV doesn't contain a valid delimiter.76 This means your file isn't properly formatted77 (or you submitted another type of file).78 """79 notify = mock.MagicMock()80 notify.send = mock.MagicMock()81 notify.admin_send = mock.MagicMock()82 with TempFile(data, suffix='.csv') as csv:83 with global_notify(notify):84 with pytest.raises(InvalidCSV):85 parse(csv)86 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)87 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))88 assert not notify.admin_send.called89def test_parse_with_invalid_csv_other_file_type_valid_delimiter():90 data = '%PDF,-1.4\nadsadsadsad'91 log = """92 Parsing CSV with comma as delimiter.93 Found 2 fields in first row, assume all the rows have this number of fields.94 Parsing...95 Analyzing data...96 The dataset is empty or isn't properly formatted.97 """98 notify = mock.MagicMock()99 notify.send = mock.MagicMock()100 notify.admin_send = mock.MagicMock()101 with TempFile(data, suffix='.csv') as csv:102 with global_notify(notify):103 with pytest.raises(InvalidCSV):104 parse(csv)105 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)106 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))107def test_parse_invalid_delimiter():108 data = '3:4:5:4:dsf:/n'109 log = """110 CSV doesn't contain a valid delimiter.111 This means your file isn't properly formatted112 (or you submitted another type of file).113 """114 notify = mock.MagicMock()115 notify.send = mock.MagicMock()116 notify.admin_send = mock.MagicMock()117 with TempFile(data, suffix='.csv') as csv:118 with global_notify(notify):119 with pytest.raises(InvalidCSV):120 parse(csv)121 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)122 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))123 assert not notify.admin_send.called124def test_parse_invalid_first_line():125 data = '123,'126 log = """127 Parsing CSV with comma as delimiter.128 With selected delimiter found only 1 columns in first row, must be at least 2.129 This means your file isn't properly formatted130 (or you submitted another type of file).131 """132 notify = mock.MagicMock()133 notify.send = mock.MagicMock()134 notify.admin_send = mock.MagicMock()135 with TempFile(data, suffix='.csv') as csv:136 with global_notify(notify):137 with pytest.raises(InvalidCSV):138 parse(csv)139 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)140 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))141 assert not notify.admin_send.called142def test_parse_rows_non_consistent():143 # Warning! No error here: inconsisten rows ignored by np.genfromtxt144 data = '1,2,3,4,5,6,7,8\n8,7,6,5,4,3,2,1\n56,34,34\n'145 log = """146 Parsing CSV with comma as delimiter.147 Found 8 fields in first row, assume all the rows have this number of fields.148 Parsing...149 Analyzing data...150 No header found, first row contains data.151 Found 1 row with invalid values:152 - row 3, column 4153 Found 2 samples.154 """155 notify = mock.MagicMock()156 notify.send = mock.MagicMock()157 notify.admin_send = mock.MagicMock()158 with TempFile(data, suffix='.csv') as csv:159 with global_notify(notify):160 meta = parse(csv)161 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)162 assert meta['data_type'] == 'GENERAL'163 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))164 assert not notify.admin_send.called165def test_parse_only_two_row():166 data = ' \n4,\n'167 log = """168 First row is empty, it must contain headers or data.169 This means your file isn't properly formatted170 (or you submitted another type of file).171 """172 notify = mock.MagicMock()173 notify.send = mock.MagicMock()174 notify.admin_send = mock.MagicMock()175 with TempFile(data, suffix='.csv') as csv:176 with global_notify(notify):177 with pytest.raises(InvalidCSV):178 parse(csv)179 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)180 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))181 assert not notify.admin_send.called182def test_parse_different_delimiters_per_Row():183 data = '4 5\n4,6\n'184 log = """185 Parsing CSV with whitespace (tab) as delimiter.186 Found 2 fields in first row, assume all the rows have this number of fields.187 Parsing...188 Analyzing data...189 The dataset is empty or isn't properly formatted.190 """191 notify = mock.MagicMock()192 notify.send = mock.MagicMock()193 notify.admin_send = mock.MagicMock()194 with TempFile(data, suffix='.csv') as csv:195 with global_notify(notify):196 with pytest.raises(InvalidCSV):197 parse(csv)198 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)199 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))200 assert not notify.admin_send.called201def test_parse_no_data():202 data = ''203 log = """204 First row is empty, it must contain headers or data.205 This means your file isn't properly formatted206 (or you submitted another type of file).207 """208 notify = mock.MagicMock()209 notify.send = mock.MagicMock()210 notify.admin_send = mock.MagicMock()211 with TempFile(data, suffix='.csv') as csv:212 with global_notify(notify):213 with pytest.raises(InvalidCSV):214 parse(csv)215 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)216 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))217 assert not notify.admin_send.called218def test_parse_not_enough_columns():219 data = '3,\n 4,,5\n6,8,9\n'220 log = """221 Parsing CSV with comma as delimiter.222 With selected delimiter found only 1 columns in first row, must be at least 2.223 This means your file isn't properly formatted224 (or you submitted another type of file).225 """226 notify = mock.MagicMock()227 notify.send = mock.MagicMock()228 notify.admin_send = mock.MagicMock()229 with TempFile(data, suffix='.csv') as csv:230 with global_notify(notify):231 with pytest.raises(InvalidCSV):232 parse(csv)233 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)234 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))235 assert not notify.admin_send.called236def test_parse_bad_column_data_first_row_empty():237 data = '3,,,\n4,\n6,8,9\n'238 log = """239 Parsing CSV with comma as delimiter.240 Found 4 fields in first row, assume all the rows have this number of fields.241 Parsing...242 Analyzing data...243 The dataset is empty or isn't properly formatted.244 """245 notify = mock.MagicMock()246 notify.send = mock.MagicMock()247 notify.admin_send = mock.MagicMock()248 with TempFile(data, suffix='.csv') as csv:249 with global_notify(notify):250 with pytest.raises(InvalidCSV):251 parse(csv)252 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)253 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))254 assert not notify.admin_send.called255def test_parse_bad_column_data_first_row():256 data = '3,\\x00,4,3\n4,\n6,8,9\n'257 log = """258 Parsing CSV with comma as delimiter.259 Found 4 fields in first row, assume all the rows have this number of fields.260 Parsing...261 Analyzing data...262 The dataset is empty or isn't properly formatted.263 """264 notify = mock.MagicMock()265 notify.send = mock.MagicMock()266 notify.admin_send = mock.MagicMock()267 with TempFile(data, suffix='.csv') as csv:268 with global_notify(notify):269 with pytest.raises(InvalidCSV):270 parse(csv)271 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)272 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))273 assert not notify.admin_send.called274def test_parse_invalid_delimiter2():275 data = '3:4:5:4:dsf:/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n'276 log = """277 CSV doesn't contain a valid delimiter.278 This means your file isn't properly formatted279 (or you submitted another type of file).280 """281 notify = mock.MagicMock()282 notify.send = mock.MagicMock()283 notify.admin_send = mock.MagicMock()284 with TempFile(data, suffix='.csv') as csv:285 with global_notify(notify):286 with pytest.raises(InvalidCSV):287 parse(csv)288 rval = '\n'.join(x[0][0] for x in notify.send.call_args_list)289 assert rval == '\n'.join(x.strip() for x in log.strip().split('\n'))...

Full Screen

Full Screen

notify.py

Source:notify.py Github

copy

Full Screen

...254 raise NotImplementedError255 if self.handler is None:256 self.handler = self.route_map[self.notify.notify_type](self.notify, self.user)257 return self.handler258 def load_notify(self):259 # if self.notify.notify_type not in self.route_map:260 # raise NotImplementedError261 # _handler = self.route_map[self.notify.notify_type](self.notify)262 # return _handler.output()263 return self.get_handler().output()264 def check(self):265 return self.get_handler().check()266 def remove(self):267 return self.get_handler().remove()268 def read_notify(self, user_id):269 user = User.objects(id=user_id).first()270 if not user or self.notify not in user.notify_content:271 print 'fail to read notify', self.notify, user.notify_content272 return False273 print 'read', self.notify, type(self.notify)274 self.notify.read = True275 self.notify.save()...

Full Screen

Full Screen

pushnotify.js

Source:pushnotify.js Github

copy

Full Screen

...126 var info = JSON.stringify(_.pick(notify, ['title', 'message']));127 hash.update(info);128 return hash.digest('hex');129 }130 return pushnotify();131}...

Full Screen

Full Screen

bootstrap-notify.js

Source:bootstrap-notify.js Github

copy

Full Screen

...26 content.url = 'www.keenthemes.com';27 content.target = '_blank';28 }2930 var notify = $.notify(content, {31 type: $('#kt_notify_state').val(),32 allow_dismiss: $('#kt_notify_dismiss').prop('checked'),33 newest_on_top: $('#kt_notify_top').prop('checked'),34 mouse_over: $('#kt_notify_pause').prop('checked'),35 showProgressbar: $('#kt_notify_progress').prop('checked'),36 spacing: $('#kt_notify_spacing').val(),37 timer: $('#kt_notify_timer').val(),38 placement: {39 from: $('#kt_notify_placement_from').val(),40 align: $('#kt_notify_placement_align').val()41 },42 offset: {43 x: $('#kt_notify_offset_x').val(),44 y: $('#kt_notify_offset_y').val() ...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var stf = require('devicefarmer-stf');2var notify = stf.notify;3notify("test message");4var stf = require('devicefarmer-stf');5var notify = stf.notify;6notify("test message");7var stf = require('devicefarmer-stf');8var notify = stf.notify;9notify("test message");10var stf = require('devicefarmer-stf');11var notify = stf.notify;12notify("test message");13var stf = require('devicefarmer-stf');14var notify = stf.notify;15notify("test message");16var stf = require('devicefarmer-stf');17var notify = stf.notify;18notify("test message");19var stf = require('devicefarmer-stf');20var notify = stf.notify;21notify("test message");22var stf = require('devicefarmer-stf');23var notify = stf.notify;24notify("test message");25var stf = require('devicefarmer-stf');26var notify = stf.notify;27notify("test message");28var stf = require('devicefarmer-stf');29var notify = stf.notify;30notify("test message");31var stf = require('devicefarmer-stf');32var notify = stf.notify;33notify("test message");34var stf = require('devicefarmer-stf');

Full Screen

Using AI Code Generation

copy

Full Screen

1var notify = require('devicefarmer-stf').notify;2var msg = "Hello World";3notify(msg);4var notify = require('devicefarmer-stf').notify;5var msg = "Hello World";6notify(msg);7var notify = require('devicefarmer-stf').notify;8var msg = "Hello World";9notify(msg);10var notify = require('devicefarmer-stf').notify;11var msg = "Hello World";12notify(msg);13var notify = require('devicefarmer-stf').notify;14var msg = "Hello World";15notify(msg);16var notify = require('devicefarmer-stf').notify;17var msg = "Hello World";18notify(msg);19var notify = require('devicefarmer-stf').notify;20var msg = "Hello World";21notify(msg);22var notify = require('devicefarmer-stf').notify;23var msg = "Hello World";24notify(msg);25var notify = require('devicefarmer-stf').notify;26var msg = "Hello World";27notify(msg);28var notify = require('devicefarmer-stf').notify;29var msg = "Hello World";30notify(msg);31var notify = require('devicefarmer-stf').notify;32var msg = "Hello World";33notify(msg);34var notify = require('devicefarmer-stf').notify;35var msg = "Hello World";36notify(msg);37var notify = require('devicefarmer-stf').notify;38var msg = "Hello World";39notify(msg);40var notify = require('devicefarmer-stf').notify;41var msg = "Hello World";42notify(msg);

Full Screen

Using AI Code Generation

copy

Full Screen

1var devicefarmer = require('devicefarmer-stf');2var device = new devicefarmer.Device();3device.notify('test');4var devicefarmer = require('devicefarmer-stf');5var device = new devicefarmer.Device();6device.notify('test');7var devicefarmer = require('devicefarmer-stf');8var device = new devicefarmer.Device();9device.notify('test');10var devicefarmer = require('devicefarmer-stf');11var device = new devicefarmer.Device();12device.notify('test');13var devicefarmer = require('devicefarmer-stf');14var device = new devicefarmer.Device();15device.notify('test');16var devicefarmer = require('devicefarmer-stf');17var device = new devicefarmer.Device();18device.notify('test');19var devicefarmer = require('devicefarmer-stf');20var device = new devicefarmer.Device();21device.notify('test');22var devicefarmer = require('devicefarmer-stf');23var device = new devicefarmer.Device();24device.notify('test');25var devicefarmer = require('devicefarmer-stf');26var device = new devicefarmer.Device();27device.notify('test');28var devicefarmer = require('devicefarmer-stf');29var device = new devicefarmer.Device();30device.notify('test');31var devicefarmer = require('devicefarmer-stf');32var device = new devicefarmer.Device();33device.notify('test');

Full Screen

Using AI Code Generation

copy

Full Screen

1var stf = require('devicefarmer-stf');2stf.notify('test', 'test message', 'test title');3var stf = require('devicefarmer-stf');4stf.notify('test', 'test message', 'test title', 'test url');5var stf = require('devicefarmer-stf');6stf.notify('test', 'test message', 'test title', 'test url', 'test icon');7var stf = require('devicefarmer-stf');8stf.notify('test', 'test message', 'test title', 'test url', 'test icon', 'test sound');9var stf = require('devicefarmer-stf');10stf.notify('test', 'test message', 'test title', 'test url', 'test icon', 'test sound', 'test tag');11var stf = require('devicefarmer-stf');12stf.notify('test', 'test message', 'test title', 'test url', 'test icon', 'test sound', 'test tag', 'test color');13var stf = require('devicefarmer-stf');14stf.notify('test', 'test message', 'test title', 'test url', 'test icon', 'test sound', 'test tag', 'test color', 'test badge');15var stf = require('devicefarmer-stf');16stf.notify('test', 'test message', 'test title', 'test url', 'test icon', 'test sound', 'test tag', 'test color', 'test badge', 'test renotify');17var stf = require('devicefarmer-stf');18stf.notify('

Full Screen

Using AI Code Generation

copy

Full Screen

1var df = require('devicefarmer-stf');2var stf = new df.STF();3stf.notify('test message');4var df = require('devicefarmer-stf');5var stf = new df.STF();6stf.notify('test message');7var df = require('devicefarmer-stf');8var stf = new df.STF();9stf.notify('test message');10var df = require('devicefarmer-stf');11var stf = new df.STF();12stf.notify('test message');13var df = require('devicefarmer-stf');14var stf = new df.STF();15stf.notify('test message');16var df = require('devicefarmer-stf');17var stf = new df.STF();18stf.notify('test message');19var df = require('devicefarmer-stf');20var stf = new df.STF();21stf.notify('test message');22var df = require('devicefarmer-stf');23var stf = new df.STF();24stf.notify('test message');25var df = require('devicefarmer-stf');26var stf = new df.STF();27stf.notify('test message');28var df = require('devicefarmer-stf');29var stf = new df.STF();30stf.notify('test message');31var df = require('devicefarmer-stf');32var stf = new df.STF();33stf.notify('test message');

Full Screen

Using AI Code Generation

copy

Full Screen

1const DeviceFarmer = require('devicefarmer-stf-client');2client.notify('test', 'test message');3const DeviceFarmer = require('devicefarmer-stf-client');4client.notify('test', 'test message');5const DeviceFarmer = require('devicefarmer-stf-client');6client.notify('test', 'test message');7const DeviceFarmer = require('devicefarmer-stf-client');8client.notify('test', 'test message');9const DeviceFarmer = require('devicefarmer-stf-client');10client.notify('test', 'test message');11const DeviceFarmer = require('devicefarmer-stf-client');12client.notify('test', 'test message');13const DeviceFarmer = require('devicefarmer-stf-client');14client.notify('test', 'test message');

Full Screen

Using AI Code Generation

copy

Full Screen

1var devicefarmer = require('devicefarmer-stf');2var df = new devicefarmer();3df.notify("test message");4df.notify("test message", "title");5df.notify("test message", "title", "subtitle");6var stf = require('stf');7var stf = new stf();8stf.notify("test message");9stf.notify("test message", "title");10stf.notify("test message", "title", "subtitle");11var stf = require('stf-client');12var stf = new stf();13stf.notify("test message");14stf.notify("test message", "title");15stf.notify("test message", "title", "subtitle");16var stf = require('stf-client');17var stf = new stf();18stf.notify("test message");19stf.notify("test message", "title");20stf.notify("test message", "title", "subtitle");21var stf = require('stf-client');22var stf = new stf();23stf.notify("test message");24stf.notify("test message", "title");25stf.notify("test message", "title", "subtitle");26var stf = require('stf-client');27var stf = new stf();28stf.notify("test message");29stf.notify("test message", "title");30stf.notify("test message", "title", "subtitle");31var stf = require('stf-client');32var stf = new stf();33stf.notify("test message");34stf.notify("test message", "title");35stf.notify("test message", "title", "subtitle");36var stf = require('stf-client');37var stf = new stf();38stf.notify("test message");39stf.notify("test message", "title");40stf.notify("test message", "title", "subtitle");41var stf = require('stf-client');42var stf = new stf();43stf.notify("test message");

Full Screen

Using AI Code Generation

copy

Full Screen

1var stf = require('devicefarmer-stf-client');2var client = new stf.Client();3client.notify("test notification");4client.disconnect();5var stf = require('devicefarmer-stf-client');6var client = new stf.Client();7client.connect(function() {8 client.notify("test notification");9 client.disconnect();10});11var stf = require('devicefarmer-stf-client');12var client = new stf.Client();13client.notify("test notification");14client.disconnect();15var stf = require('devicefarmer-stf-client');16var client = new stf.Client();17client.connect(function() {18 client.notify("test notification");19 client.disconnect();20});21var stf = require('devicefarmer-stf-client');22var client = new stf.Client();23client.disconnect();24var stf = require('devicefarmer-stf-client');25var client = new stf.Client();26client.connect(function() {27 client.disconnect();28});

Full Screen

Using AI Code Generation

copy

Full Screen

1var stf = require('devicefarmer-stf-client');2client.notify('serial', 'test notification', function(err) {3 if (err) {4 console.log(err);5 } else {6 console.log('Notification sent');7 }8});9var stf = require('devicefarmer-stf-client');10client.setClipboard('serial', 'test clipboard content', function(err) {11 if (err) {12 console.log(err);13 } else {14 console.log('Clipboard content set');15 }16});17var stf = require('devicefarmer-stf-client');18client.getClipboard('serial', function(err, data) {19 if (err) {20 console.log(err);21 } else {22 console.log('Clipboard content: ' + data);23 }24});25var stf = require('devicefarmer-stf-client');26client.getDevice('serial', function(err, data) {27 if (err) {28 console.log(err);29 } else {30 console.log('Device information: ' + data);31 }32});33var stf = require('devicefarmer-stf-client');34client.getDevices(function(err, data) {35 if (err) {36 console.log(err);37 } else {38 console.log('All device information: ' + data);39 }40});41var stf = require('devicefarmer-stf-client');

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run devicefarmer-stf automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful