在 Rspec 中,我正在测试包含如下数组的哈希:subject { describe_class.call(build: build_one, user:)it '返回正确的数据' do response = subject expected_response = ...
在 Rspec 中,我正在测试包含如下数组的哈希:
subject { described_class.call(build: build_one, user:)
it 'returns the correct data' do
response = subject
expected_response = {
id: build_one.id,
status: {
key: 'active',
name: 'Active'
},
build_type: 'SystemBuild',
calculated_type_id: CalculatedType.standard.id,
build_time: build_one.build_time,
summary: 'Lorem ipsum dolor sit amet...',
data: [
{id: '1', name: '', parent: ''},
{id: '1.1', name: 'Calc type 1', parent: '1'},
{id: '1.2', name: 'Calc type 2', parent: '1'},
{id: '1.3', name: 'Calc type 3', parent: '1'},
{id: '1.1.1', name: 'Value 1', parent: '1.1'},
{id: '1.1.2', name: 'Value 2', parent: '1.1'},
{id: '1.2.1', name: 'Value 3', parent: '1.2'},
{id: '1.3.1', name: 'Value 4', parent: '1.3'},
{id: '1.3.2', name: 'Value 5', parent: '1.3'},
{id: '1.3.3', name: 'Value 6', parent: '1.3'}
]
}
expect(response).to match(expected_response)
end
我的问题是 data
数组不一定按照我在 expected_response
.
我当然可以更改 中的顺序 expected_response
,但我不想以这种方式限制它。对于应用程序来说,数组顺序根本不重要,更改应用程序的其他部分可能会改变顺序。唯一重要的是所有元素都存在于数组中。
当我运行测试时,我得到以下结果:
Diff:
:build_time: 2024-06-22 10:17:55.0000000000 -0700,
:build_type: "SystemType",
:calculated_type_id: 3,
:id => 234,
-:data => [{:id=>"1", :name=>"", :parent=>""}, {:id=>"1.1", :name=>"Calc type 1", :parent=>"1"}, {:id=>"1.2", :name=>"Calc type 2", :parent=>"1"}, {:id=>"1.3", :name=>"Calc type 3", :parent=>"1"}, {:id=>"1.1.1", :name=>"Value 1", :parent=>"1.1"}, {:id=>"1.1.2", :name=>"Value 2", :parent=>"1.1"}, {:id=>"1.2.1", :name=>"Value 3", :parent=>"1.2"}, {:id=>"1.3.1", :name=>"Value 4", :parent=>"1.3"}, {:id=>"1.3.2", :name=>"Value 5", :parent=>"1.3"}, {:id=>"1.3.3", :name=>"Value 6", :parent=>"1.3"}]
+:data => [{:id=>"1", :name=>"", :parent=>""}, {:id=>"1.1", :name=>"Calc type 1", :parent=>"1"}, {:id=>"1.2", :name=>"Calc type 2", :parent=>"1"}, {:id=>"1.3", :name=>"Calc type 3", :parent=>"1"}, {:id=>"1.1.1", :name=>"Value 1", :parent=>"1.1"}, {:id=>"1.2.1", :name=>"Value 3", :parent=>"1.2"}, {:id=>"1.3.2", :name=>"Value 5", :parent=>"1.3"}, {:id=>"1.1.2", :name=>"Value 2", :parent=>"1.1"}, {:id=>"1.3.1", :name=>"Value 4", :parent=>"1.3"}, {:id=>"1.3.3", :name=>"Value 6", :parent=>"1.3"}]
:status => {:key=>"active", :name=>"Active"},
:summary => "Lorem ipsum dolor sit amet..."
我认为这样 match(...)
可以忽略数组的顺序 data
,只需检查所有元素是否存在。有没有办法做到这一点而不必检查哈希中的每个元素?
我正在为我们的 Rails 应用程序整合一个 gem,以便通过 Entra ID 使用 SAML 单点登录/注销。我对需要实现的最后一点有一些疑问:ID 提供商发起的单点注销请求...
我正在为我们的 Rails 应用程序整合一个 gem,以便通过 Entra ID 使用 SAML 单点登录/注销。我对需要实现的最后一点有一些疑问:ID 提供商发起的单点注销请求。
我们在服务提供商(Rails 应用程序)中使用 Active Record Session Store,默认情况下,创建的表存储会话 ID 和会话数据。但是 IdP 无法知道每个 SP 的会话 ID,对吗?我唯一需要参考的信息是 IdP 注销请求中的名称 ID(与会话关联的用户名)?实际上,我也需要将名称 ID 存储在会话表中,通过 IdP 注销请求中的名称 ID 找到相应的会话,然后删除该会话?
我现在遇到的问题是,当 IdP 注销请求进入时,会话不会被删除。我认为这是因为 Active Record Session Store 中间件没有为该请求获取正确的会话。而是在表中添加了一个新会话。
切线相关的是,SLO 是否可以使用 cookie 存储?