Oracle apex 如何绕过单元测试Oracle APEX的登录?

Oracle apex 如何绕过单元测试Oracle APEX的登录?,oracle-apex,cypress,Oracle Apex,Cypress,根据Cypress最佳实践,我应该避免在每次测试之前使用我的登录UI。我很难做到这一点,因为似乎登录过程需要的不仅仅是用户名和密码 我使用chrome的篡改数据工具和Jmeter检查了Oracle APEX登录过程的机制,基本上,登录过程有两个步骤: (1) 登录页面重定向到URL中具有有效会话id的登录页面,该登录页面的种子为数十个时间敏感的唯一id。 (2) 提交用户名和密码后,将向/ords/wwv_flow.accept发出POST请求,其中包含用户名、密码和其他几个对时间敏感的唯一标识

根据Cypress最佳实践,我应该避免在每次测试之前使用我的登录UI。我很难做到这一点,因为似乎登录过程需要的不仅仅是用户名和密码

我使用chrome的
篡改数据工具
Jmeter
检查了Oracle APEX登录过程的机制,基本上,登录过程有两个步骤:
(1) 登录页面重定向到URL中具有有效会话id的登录页面,该登录页面的种子为数十个时间敏感的唯一id。
(2) 提交用户名和密码后,将向/ords/wwv_flow.accept发出POST请求,其中包含用户名、密码和其他几个对时间敏感的唯一标识符

APEX似乎需要类似以下内容才能成功登录:

p_json : {"salt":"108222855956905007172773085768141257328","pageItems":{"itemsToSubmit":[{"n":"P101_USERNAME","v":"jsmith"},{"n":"P101_PASSWORD","v":"Password123"}],"protected":"unDCYO1qmj_OAwtyYNo_yA","rowVersion":""}},
p_flow_id : 4000250,
p_flow_step_id: 101,
p_instance: 6589106753596,
p_page_submission_id: 108222855…,
p_request : LOGIN,
p_reload_on_submit : A

所有这些变量(除了用户名和密码)都可以在登录页面中使用,但要获得它们,我必须访问登录UI,这是我试图避免的。我是不是想错了?

我认为这是错误的方法。至于单元测试,您必须接受生产与预生产方面的某种程度的可变性。 上面说,我认为你需要考虑一些更“正常”的方法,比如:

  • 在Pre-Prod中更改密码
  • 备用身份验证方案
  • 根据您的需要选择其他构建选项

我不确定您提到的这些最佳实践,但您可能在测试过程中传递的会话信息必须由服务器端的APEX engine创建

除了向服务器传递正确的凭据信息之外,没有其他方法可以通过向服务器传递一些参数来绕过登录。但是,您可以在APEX中实现一个自定义身份验证模式,该模式将通过使用某种令牌或其他自定义方式进行身份验证(并创建您的会话),例如,检查浏览器代理、IP地址、环境,我不知道


不过,这个自定义身份验证模式与单元测试无关。

这对我来说很有意义。谢谢你的推荐。