Add "truncated" flag to let Android app know
This commit is contained in:
		
							parent
							
								
									807d2b0d9d
								
							
						
					
					
						commit
						76d102f964
					
				
					 2 changed files with 30 additions and 1 deletions
				
			
		|  | @ -238,9 +238,10 @@ func maybeTruncateFCMMessage(m *messaging.Message) *messaging.Message { | ||||||
| 		return m | 		return m | ||||||
| 	} | 	} | ||||||
| 	if len(s) > fcmMessageLimitReal { | 	if len(s) > fcmMessageLimitReal { | ||||||
| 		over := len(s) - fcmMessageLimitReal | 		over := len(s) - fcmMessageLimitReal + 16 // = len("truncated":"1",), sigh ... | ||||||
| 		message, ok := m.Data["message"] | 		message, ok := m.Data["message"] | ||||||
| 		if ok && len(message) > over { | 		if ok && len(message) > over { | ||||||
|  | 			m.Data["truncated"] = "1" | ||||||
| 			m.Data["message"] = message[:len(message)-over] | 			m.Data["message"] = message[:len(message)-over] | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -618,9 +618,37 @@ func TestServer_MaybeTruncateFCMMessage(t *testing.T) { | ||||||
| 	truncatedMessageLength := len(truncatedFCMMessage.Data["message"]) | 	truncatedMessageLength := len(truncatedFCMMessage.Data["message"]) | ||||||
| 	serializedTruncatedFCMMessage, _ := json.Marshal(truncatedFCMMessage) | 	serializedTruncatedFCMMessage, _ := json.Marshal(truncatedFCMMessage) | ||||||
| 	require.Equal(t, fcmMessageLimitReal, len(serializedTruncatedFCMMessage)) | 	require.Equal(t, fcmMessageLimitReal, len(serializedTruncatedFCMMessage)) | ||||||
|  | 	require.Equal(t, "1", truncatedFCMMessage.Data["truncated"]) | ||||||
| 	require.NotEqual(t, origMessageLength, truncatedMessageLength) | 	require.NotEqual(t, origMessageLength, truncatedMessageLength) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func TestServer_MaybeTruncateFCMMessage_NotTooLong(t *testing.T) { | ||||||
|  | 	origMessage := "not really a long string" | ||||||
|  | 	origFCMMessage := &messaging.Message{ | ||||||
|  | 		Topic: "mytopic", | ||||||
|  | 		Data: map[string]string{ | ||||||
|  | 			"id":       "abcdefg", | ||||||
|  | 			"time":     "1641324761", | ||||||
|  | 			"event":    "message", | ||||||
|  | 			"topic":    "mytopic", | ||||||
|  | 			"priority": "0", | ||||||
|  | 			"tags":     "", | ||||||
|  | 			"title":    "", | ||||||
|  | 			"message":  origMessage, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 	origMessageLength := len(origFCMMessage.Data["message"]) | ||||||
|  | 	serializedOrigFCMMessage, _ := json.Marshal(origFCMMessage) | ||||||
|  | 	require.LessOrEqual(t, len(serializedOrigFCMMessage), fcmMessageLimitReal) // Pre-condition | ||||||
|  | 
 | ||||||
|  | 	notTruncatedFCMMessage := maybeTruncateFCMMessage(origFCMMessage) | ||||||
|  | 	notTruncatedMessageLength := len(notTruncatedFCMMessage.Data["message"]) | ||||||
|  | 	serializedNotTruncatedFCMMessage, _ := json.Marshal(notTruncatedFCMMessage) | ||||||
|  | 	require.Equal(t, origMessageLength, notTruncatedMessageLength) | ||||||
|  | 	require.Equal(t, len(serializedOrigFCMMessage), len(serializedNotTruncatedFCMMessage)) | ||||||
|  | 	require.Equal(t, "", notTruncatedFCMMessage.Data["truncated"]) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func newTestConfig(t *testing.T) *Config { | func newTestConfig(t *testing.T) *Config { | ||||||
| 	conf := NewConfig() | 	conf := NewConfig() | ||||||
| 	conf.CacheFile = filepath.Join(t.TempDir(), "cache.db") | 	conf.CacheFile = filepath.Join(t.TempDir(), "cache.db") | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue