mirror of
https://github.com/google/pebble.git
synced 2025-06-24 01:56:16 +00:00
Import of the watch repository from Pebble
This commit is contained in:
commit
3b92768480
10334 changed files with 2564465 additions and 0 deletions
155
tests/fw/services/notifications/test_nexmo.c
Normal file
155
tests/fw/services/notifications/test_nexmo.c
Normal file
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* Copyright 2024 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "clar.h"
|
||||
|
||||
#include "services/normal/notifications/ancs/nexmo.h"
|
||||
#include "services/normal/notifications/ancs/ancs_notifications_util.h"
|
||||
#include "services/normal/timeline/attributes_actions.h"
|
||||
|
||||
// Stubs
|
||||
////////////////////////////////////////////////////////////////
|
||||
#include "stubs_logging.h"
|
||||
#include "stubs_passert.h"
|
||||
#include "stubs_pbl_malloc.h"
|
||||
|
||||
// Fakes
|
||||
////////////////////////////////////////////////////////////////
|
||||
extern const char *NEXMO_REAUTH_STRING;
|
||||
|
||||
static AttributeList *s_expected_attributes = NULL;
|
||||
static TimelineItemActionGroup *s_expected_actions = NULL;
|
||||
static bool s_performed_store = false;
|
||||
|
||||
status_t ios_notif_pref_db_store_prefs(const uint8_t *app_id, int length, AttributeList *attr_list,
|
||||
TimelineItemActionGroup *action_group) {
|
||||
const int buf_size = 256;
|
||||
uint8_t buf1[buf_size];
|
||||
uint8_t buf2[buf_size];
|
||||
attributes_actions_serialize_payload(attr_list, action_group, buf1, buf_size);
|
||||
attributes_actions_serialize_payload(s_expected_attributes, s_expected_actions, buf2, buf_size);
|
||||
cl_assert_equal_m(buf1, buf2, attributes_actions_get_serialized_payload_size(s_expected_attributes, s_expected_actions));
|
||||
|
||||
s_performed_store = true;
|
||||
return S_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static uint32_t s_expected_uid = 0;
|
||||
static bool s_performed_dismiss = false;
|
||||
|
||||
void ancs_perform_action(uint32_t notification_uid, uint8_t action_id) {
|
||||
cl_assert_equal_i(notification_uid, s_expected_uid);
|
||||
cl_assert_equal_i(action_id, ActionIDNegative);
|
||||
s_performed_dismiss = true;
|
||||
}
|
||||
|
||||
void test_nexmo__initialize(void) {
|
||||
s_expected_attributes = NULL;
|
||||
s_expected_actions = NULL;
|
||||
s_performed_store = false;
|
||||
s_expected_uid = INVALID_UID;
|
||||
s_performed_dismiss = false;
|
||||
}
|
||||
|
||||
void test_nexmo__cleanup(void) {
|
||||
}
|
||||
|
||||
void test_nexmo__is_reuath_sms(void) {
|
||||
uint8_t expected_app_id_buf[128];
|
||||
ANCSAttribute *expected_app_id = (ANCSAttribute *)&expected_app_id_buf;
|
||||
expected_app_id->length = strlen(IOS_SMS_APP_ID);
|
||||
memcpy(expected_app_id->value, IOS_SMS_APP_ID, strlen(IOS_SMS_APP_ID));
|
||||
|
||||
char valid_message[128];
|
||||
strcpy(valid_message, "possible preamble ");
|
||||
strcat(valid_message, NEXMO_REAUTH_STRING);
|
||||
strcat(valid_message, " possible postamble");
|
||||
|
||||
uint8_t expected_message_buf[128];
|
||||
ANCSAttribute *expected_message = (ANCSAttribute *)&expected_message_buf;
|
||||
expected_message->length = strlen(valid_message);
|
||||
memcpy(expected_message->value, valid_message, strlen(valid_message));
|
||||
|
||||
|
||||
uint8_t bad_app_id_buf[128];
|
||||
ANCSAttribute *bad_app_id = (ANCSAttribute *)&bad_app_id_buf;
|
||||
bad_app_id->length = strlen(IOS_MAIL_APP_ID);
|
||||
memcpy(bad_app_id->value, IOS_MAIL_APP_ID, strlen(IOS_MAIL_APP_ID));
|
||||
|
||||
const char *bad_string = "Phil was here";
|
||||
uint8_t bad_message_buf[128];
|
||||
ANCSAttribute *bad_message = (ANCSAttribute *)&bad_message_buf;
|
||||
bad_message->length = strlen(bad_string);
|
||||
memcpy(bad_message->value, bad_string, strlen(bad_string));
|
||||
|
||||
|
||||
cl_assert(nexmo_is_reauth_sms(expected_app_id, expected_message));
|
||||
cl_assert(!nexmo_is_reauth_sms(bad_app_id, expected_message));
|
||||
cl_assert(!nexmo_is_reauth_sms(expected_app_id, bad_message));
|
||||
cl_assert(!nexmo_is_reauth_sms(bad_app_id, bad_message));
|
||||
}
|
||||
|
||||
void test_nexmo__handle_reuath_sms(void) {
|
||||
// UID
|
||||
const uint32_t uid = 42;
|
||||
s_expected_uid = uid;
|
||||
|
||||
// App ID
|
||||
uint8_t app_id_buf[128];
|
||||
ANCSAttribute *app_id = (ANCSAttribute *)&app_id_buf;
|
||||
app_id->length = strlen(IOS_SMS_APP_ID);
|
||||
memcpy(app_id->value, IOS_SMS_APP_ID, strlen(IOS_SMS_APP_ID));
|
||||
|
||||
// Message
|
||||
char valid_message[128];
|
||||
strcpy(valid_message, "possible preamble ");
|
||||
strcat(valid_message, NEXMO_REAUTH_STRING);
|
||||
strcat(valid_message, " possible postamble");
|
||||
|
||||
uint8_t message_buf[128];
|
||||
ANCSAttribute *message = (ANCSAttribute *)&message_buf;
|
||||
message->length = strlen(valid_message);
|
||||
memcpy(message->value, valid_message, strlen(valid_message));
|
||||
|
||||
// Existing prefs
|
||||
iOSNotifPrefs existing_prefs = {
|
||||
.attr_list = {
|
||||
.num_attributes = 3,
|
||||
.attributes = (Attribute[]) {
|
||||
{ .id = AttributeIdTitle, .cstring = "Title" },
|
||||
{ .id = AttributeIdBody, .cstring = "Body" },
|
||||
{ .id = AttributeIdAppName, .cstring = "Awesome" },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
// Make sure that the prefs we store are the existing ones + the reauth msg
|
||||
AttributeList expected_attr_list = {
|
||||
.num_attributes = 4,
|
||||
.attributes = (Attribute[]) {
|
||||
{ .id = AttributeIdTitle, .cstring = "Title" },
|
||||
{ .id = AttributeIdBody, .cstring = "Body" },
|
||||
{ .id = AttributeIdAppName, .cstring = "Awesome" },
|
||||
{ .id = AttributeIdAuthCode, .cstring = valid_message },
|
||||
},
|
||||
};
|
||||
s_expected_attributes = &expected_attr_list;
|
||||
|
||||
nexmo_handle_reauth_sms(uid, app_id, message, &existing_prefs);
|
||||
cl_assert(s_performed_store);
|
||||
cl_assert(s_performed_dismiss);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue