package web import "testing" func TestExtractTicketID(t *testing.T) { tests := []struct { name string body string want int64 }{ {name: "explicit ticket id", body: `{"ticket_id":42}`, want: 42}, {name: "camel case ticket id", body: `{"ticketId":"43"}`, want: 43}, {name: "typed ticket", body: `{"itemtype":"Ticket","id":44}`, want: 44}, {name: "nested ticket", body: `{"ticket":{"id":45}}`, want: 45}, {name: "ticket url", body: `{"url":"https://glpi.example/api.php/v2.3/Assistance/Ticket/46"}`, want: 46}, {name: "unrelated generic id", body: `{"itemtype":"User","id":99}`, want: 0}, {name: "wrapped unrelated generic id", body: `{"data":{"id":100}}`, want: 0}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := extractTicketID([]byte(tt.body)); got != tt.want { t.Fatalf("extractTicketID() = %d, want %d", got, tt.want) } }) } }