Skip to content

Commit

Permalink
A few more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Anilm3 committed Jul 17, 2024
1 parent 3d0cabb commit bac2aca
Showing 1 changed file with 85 additions and 1 deletion.
86 changes: 85 additions & 1 deletion tests/processor/fingerprint_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -876,7 +876,7 @@ TEST(TestSessionFingerprint, CookieKeysNormalization)
ddwaf_object_free(&output);
}

TEST(TestSessionFingerprint, CookieValuessNormalization)
TEST(TestSessionFingerprint, CookieValuesNormalization)
{
ddwaf_object tmp;

Expand Down Expand Up @@ -907,4 +907,88 @@ TEST(TestSessionFingerprint, CookieValuessNormalization)
ddwaf_object_free(&output);
}

TEST(TestSessionFingerprint, CookieEmptyValues)
{
ddwaf_object tmp;

ddwaf_object cookies;
ddwaf_object_map(&cookies);
ddwaf_object_map_add(&cookies, "name", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "theme", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "language", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "tracking_id", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "gdpr_consent", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "session_id", ddwaf_object_invalid(&tmp));
ddwaf_object_map_add(&cookies, "last_visit", ddwaf_object_invalid(&tmp));

session_fingerprint gen{"id", {}, {}, false, true};

ddwaf::timer deadline{2s};
auto [output, attr] = gen.eval_impl({{}, {}, false, &cookies}, {{}, {}, false, "ansd0182u2n"},
{{}, {}, false, "admin"}, deadline);

EXPECT_EQ(output.type, DDWAF_OBJ_STRING);
EXPECT_EQ(attr, object_store::attribute::none);

std::string_view output_sv{
output.stringValue, static_cast<std::size_t>(static_cast<std::size_t>(output.nbEntries))};
EXPECT_STRV(output_sv, "ssn-8c6976e5-df6143bc-d3648ef2-269500d3");

ddwaf_object_free(&cookies);
ddwaf_object_free(&output);
}

TEST(TestSessionFingerprint, CookieEmptyKeys)
{
ddwaf_object tmp;

ddwaf_object cookies;
ddwaf_object_map(&cookies);
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "albert,martinez"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "dark"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "en-GB,en-US"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "xyzabc"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, ",yes"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "ansd0182u2n,"));
ddwaf_object_map_add(&cookies, "", ddwaf_object_string(&tmp, "2024-07-16T12:00:00Z"));

session_fingerprint gen{"id", {}, {}, false, true};

ddwaf::timer deadline{2s};
auto [output, attr] = gen.eval_impl({{}, {}, false, &cookies}, {{}, {}, false, "ansd0182u2n"},
{{}, {}, false, "admin"}, deadline);

EXPECT_EQ(output.type, DDWAF_OBJ_STRING);
EXPECT_EQ(attr, object_store::attribute::none);

std::string_view output_sv{
output.stringValue, static_cast<std::size_t>(static_cast<std::size_t>(output.nbEntries))};
EXPECT_STRV(output_sv, "ssn-8c6976e5-d3648ef2-f32e5c3e-269500d3");

ddwaf_object_free(&cookies);
ddwaf_object_free(&output);
}

TEST(TestSessionFingerprint, EmptyEverything)
{
ddwaf_object cookies;
ddwaf_object_map(&cookies);

session_fingerprint gen{"id", {}, {}, false, true};

ddwaf::timer deadline{2s};
auto [output, attr] = gen.eval_impl(
{{}, {}, false, &cookies}, {{}, {}, false, {}}, {{}, {}, false, {}}, deadline);

EXPECT_EQ(output.type, DDWAF_OBJ_STRING);
EXPECT_EQ(attr, object_store::attribute::none);

std::string_view output_sv{
output.stringValue, static_cast<std::size_t>(static_cast<std::size_t>(output.nbEntries))};
EXPECT_STRV(output_sv, "ssn----");

ddwaf_object_free(&cookies);
ddwaf_object_free(&output);
}

} // namespace

0 comments on commit bac2aca

Please sign in to comment.