1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-07-22 17:18:37 +00:00

fix(googlereader): handle various item ID formats

- Expected format: "tag:google.com,2005:reader/item/00000000148b9369" (hexadecimal string with prefix and padding)
- NetNewsWire uses this format: "tag:google.com,2005:reader/item/2f2" (hexadecimal string with prefix and no padding)
- Reeder uses this format: "000000000000048c" (hexadecimal string without prefix and padding)
- Liferea uses this format: "12345" (decimal string)
This commit is contained in:
Frédéric Guillot 2025-05-04 20:05:17 -07:00
parent cb775bc79e
commit 663c3094e2
3 changed files with 49 additions and 56 deletions

View file

@ -23,7 +23,10 @@ func TestConvertEntryIDToLongFormItemID(t *testing.T) {
func TestParseItemIDsFromRequest(t *testing.T) {
formValues := url.Values{}
formValues.Add("i", "12345")
formValues.Add("i", convertEntryIDToLongFormItemID(45678))
formValues.Add("i", "tag:google.com,2005:reader/item/00000000148b9369")
formValues.Add("i", "tag:google.com,2005:reader/item/2f2")
formValues.Add("i", "000000000000046f")
formValues.Add("i", "tag:google.com,2005:reader/item/272")
request := &http.Request{
Form: formValues,
@ -34,7 +37,7 @@ func TestParseItemIDsFromRequest(t *testing.T) {
t.Fatalf("unexpected error: %v", err)
}
var expected = []int64{12345, 45678}
var expected = []int64{12345, 344691561, 754, 1135, 626}
if !reflect.DeepEqual(result, expected) {
t.Errorf("expected %v, got %v", expected, result)
}
@ -51,7 +54,7 @@ func TestParseItemIDsFromRequest(t *testing.T) {
}
func TestParseItemID(t *testing.T) {
// Test with long form ID
// Test with long form ID and hex ID
result, err := parseItemID("tag:google.com,2005:reader/item/0000000000000001")
if err != nil {
t.Fatalf("unexpected error: %v", err)
@ -61,6 +64,16 @@ func TestParseItemID(t *testing.T) {
t.Errorf("expected %d, got %d", expected, result)
}
// Test with hexadecimal long form ID
result, err = parseItemID("0000000000000468")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
expected = int64(1128)
if result != expected {
t.Errorf("expected %d, got %d", expected, result)
}
// Test with short form ID
result, err = parseItemID("12345")
if err != nil {
@ -88,22 +101,4 @@ func TestParseItemID(t *testing.T) {
if err == nil {
t.Fatalf("expected error, got nil")
}
// Test with ID that is too short
_, err = parseItemID("tag:google.com,2005:reader/item/00000000000000")
if err == nil {
t.Fatalf("expected error, got nil")
}
// Test with ID that is too long
_, err = parseItemID("tag:google.com,2005:reader/item/000000000000000000")
if err == nil {
t.Fatalf("expected error, got nil")
}
// Test with ID that is not a number
_, err = parseItemID("tag:google.com,2005:reader/item/abc")
if err == nil {
t.Fatalf("expected error, got nil")
}
}