|
|
@@ -0,0 +1,109 @@
|
|
|
+// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
|
|
+// SPDX-License-Identifier: Apache-2.0
|
|
|
+
|
|
|
+package googlereader // import "miniflux.app/v2/internal/googlereader"
|
|
|
+
|
|
|
+import (
|
|
|
+ "net/http"
|
|
|
+ "net/url"
|
|
|
+ "reflect"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func TestConvertEntryIDToLongFormItemID(t *testing.T) {
|
|
|
+ entryID := int64(344691561)
|
|
|
+ expected := "tag:google.com,2005:reader/item/00000000148b9369"
|
|
|
+ result := convertEntryIDToLongFormItemID(entryID)
|
|
|
+
|
|
|
+ if result != expected {
|
|
|
+ t.Errorf("expected %s, got %s", expected, result)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestParseItemIDsFromRequest(t *testing.T) {
|
|
|
+ formValues := url.Values{}
|
|
|
+ formValues.Add("i", "12345")
|
|
|
+ formValues.Add("i", convertEntryIDToLongFormItemID(45678))
|
|
|
+
|
|
|
+ request := &http.Request{
|
|
|
+ Form: formValues,
|
|
|
+ }
|
|
|
+
|
|
|
+ result, err := parseItemIDsFromRequest(request)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("unexpected error: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ var expected = []int64{12345, 45678}
|
|
|
+ if !reflect.DeepEqual(result, expected) {
|
|
|
+ t.Errorf("expected %v, got %v", expected, result)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Test with no item IDs
|
|
|
+ formValues = url.Values{}
|
|
|
+ request = &http.Request{
|
|
|
+ Form: formValues,
|
|
|
+ }
|
|
|
+ _, err = parseItemIDsFromRequest(request)
|
|
|
+ if err == nil {
|
|
|
+ t.Fatalf("expected error, got nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestParseItemID(t *testing.T) {
|
|
|
+ // Test with long form ID
|
|
|
+ result, err := parseItemID("tag:google.com,2005:reader/item/0000000000000001")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("unexpected error: %v", err)
|
|
|
+ }
|
|
|
+ expected := int64(1)
|
|
|
+ if result != expected {
|
|
|
+ t.Errorf("expected %d, got %d", expected, result)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Test with short form ID
|
|
|
+ result, err = parseItemID("12345")
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("unexpected error: %v", err)
|
|
|
+ }
|
|
|
+ expected = int64(12345)
|
|
|
+ if result != expected {
|
|
|
+ t.Errorf("expected %d, got %d", expected, result)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Test with invalid long form ID
|
|
|
+ _, err = parseItemID("tag:google.com,2005:reader/item/000000000000000g")
|
|
|
+ if err == nil {
|
|
|
+ t.Fatalf("expected error, got nil")
|
|
|
+ }
|
|
|
+
|
|
|
+ // Test with invalid short form ID
|
|
|
+ _, err = parseItemID("invalid_id")
|
|
|
+ if err == nil {
|
|
|
+ t.Fatalf("expected error, got nil")
|
|
|
+ }
|
|
|
+
|
|
|
+ // Test with empty ID
|
|
|
+ _, err = parseItemID("")
|
|
|
+ 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")
|
|
|
+ }
|
|
|
+}
|