1+ #include " credentialmanager.h"
2+ #include " common.hpp"
3+
4+ #include < string.h>
5+ #include < algorithm>
6+
7+ TestCredmanState& TestCredmanState::instance (){
8+ static TestCredmanState state;
9+ return state;
10+ }
11+
12+ extern " C"
13+ {
14+ void GetCredentialsSize (uint32_t *size)
15+ {
16+ *size = (uint32_t )TestCredmanState::instance ().credentials_buffer .size ();
17+ }
18+ size_t ReadCredentialsBuffer (void *buffer, size_t offset, size_t len)
19+ {
20+ if (offset + len > TestCredmanState::instance ().credentials_buffer .size ())
21+ {
22+ len = TestCredmanState::instance ().credentials_buffer .size () - offset;
23+ }
24+ memcpy (buffer, TestCredmanState::instance ().credentials_buffer .data () + offset, len);
25+ return len;
26+ }
27+ void GetWasmVersion (uint32_t *version)
28+ {
29+ *version = -1 ;
30+ }
31+ void GetRequestSize (uint32_t *size)
32+ {
33+ *size = (uint32_t )TestCredmanState::instance ().request_buffer .size ();
34+ }
35+ void GetRequestBuffer (void *buffer)
36+ {
37+ memcpy (buffer, TestCredmanState::instance ().request_buffer .data (), TestCredmanState::instance ().request_buffer .size ());
38+ }
39+
40+ void AddStringIdEntry (char *cred_id, char * icon, size_t icon_len, char *title, char *subtitle, char *disclaimer, char *warning) {
41+ if (!cred_id) return ;
42+ StringIdEntry entry;
43+ entry.id = cred_id;
44+ if (icon) entry.icon = std::string (icon, icon_len);
45+ if (title) entry.title = title;
46+ if (subtitle) entry.subtitle = subtitle;
47+ if (disclaimer) entry.disclaimer = disclaimer;
48+ if (warning) entry.warning = warning;
49+ TestCredmanState::instance ().string_id_entries .push_back (entry);
50+ }
51+
52+ void SetAdditionalDisclaimerAndUrlForVerificationEntry (char *cred_id, char *secondary_disclaimer, char *url_display_text, char *url_value) {
53+ if (!cred_id) return ;
54+ auto & entries = TestCredmanState::instance ().string_id_entries ;
55+ auto it = std::find_if (entries.begin (), entries.end (), [&](const StringIdEntry& entry) {
56+ return entry.id == cred_id;
57+ });
58+ if (it != entries.end ()) {
59+ if (secondary_disclaimer) it->secondary_disclaimer = secondary_disclaimer;
60+ if (url_display_text) it->url_display_text = url_display_text;
61+ if (url_value) it->url_value = url_value;
62+ }
63+ }
64+
65+ void AddFieldForStringIdEntry (char *cred_id, char *field_display_name, char *field_display_value) {
66+ if (!cred_id) return ;
67+ auto & entries = TestCredmanState::instance ().string_id_entries ;
68+ auto it = std::find_if (entries.begin (), entries.end (), [&](const StringIdEntry& entry) {
69+ return entry.id == cred_id;
70+ });
71+ if (it != entries.end ()) {
72+ it->fields .emplace_back (
73+ field_display_name ? field_display_name : " " ,
74+ field_display_value ? field_display_value : " "
75+ );
76+ }
77+ }
78+
79+ void AddPaymentEntry (char *cred_id, char *merchant_name, char *payment_method_name, char *payment_method_subtitle, char * payment_method_icon, size_t payment_method_icon_len, char *transaction_amount, char * bank_icon, size_t bank_icon_len, char * payment_provider_icon, size_t payment_provider_icon_len) {
80+ if (!cred_id) return ;
81+ PaymentEntry entry;
82+ entry.id = cred_id;
83+ if (merchant_name) entry.merchant_name = merchant_name;
84+ if (payment_method_name) entry.payment_method_name = payment_method_name;
85+ if (payment_method_subtitle) entry.payment_method_subtitle = payment_method_subtitle;
86+ if (payment_method_icon) entry.payment_method_icon = std::string (payment_method_icon, payment_method_icon_len);
87+ if (transaction_amount) entry.transaction_amount = transaction_amount;
88+ if (bank_icon) entry.bank_icon = std::string (bank_icon, bank_icon_len);
89+ if (payment_provider_icon) entry.payment_provider_icon = std::string (payment_provider_icon, payment_provider_icon_len);
90+ TestCredmanState::instance ().payment_entries .push_back (entry);
91+ }
92+ }
0 commit comments