46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package onvif
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseFixtureProfilesAndStreamURI(t *testing.T) {
|
|
profilesData, err := os.ReadFile(filepath.Join("..", "..", "..", "..", "..", "testdata", "onvif", "profiles.xml"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
profiles, err := ParseProfiles(profilesData)
|
|
if err != nil || len(profiles) != 2 || profiles[0].Width != 1920 {
|
|
t.Fatalf("profiles=%#v err=%v", profiles, err)
|
|
}
|
|
uriData, err := os.ReadFile(filepath.Join("..", "..", "..", "..", "..", "testdata", "onvif", "stream-uri.xml"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
uri, err := ParseStreamURI(uriData)
|
|
if err != nil || uri != "rtsp://camera.invalid/live/main" {
|
|
t.Fatalf("uri=%q err=%v", uri, err)
|
|
}
|
|
}
|
|
func TestRejectCredentialInStreamURI(t *testing.T) {
|
|
if _, err := ParseStreamURI([]byte(`<Uri>rtsp://user:pass@camera.invalid/live</Uri>`)); err == nil {
|
|
t.Fatal("credential URI accepted")
|
|
}
|
|
}
|
|
|
|
func TestParseMediaServiceAddress(t *testing.T) {
|
|
data := []byte(`<Envelope><Body><GetCapabilitiesResponse><Capabilities><Media><XAddr>http://camera.invalid:8000/onvif/media_service</XAddr></Media></Capabilities></GetCapabilitiesResponse></Body></Envelope>`)
|
|
address, err := ParseMediaServiceAddress(data)
|
|
if err != nil || address != "http://camera.invalid:8000/onvif/media_service" {
|
|
t.Fatalf("address=%q err=%v", address, err)
|
|
}
|
|
}
|
|
|
|
func TestParseMediaServiceAddressRejectsMissingMedia(t *testing.T) {
|
|
if _, err := ParseMediaServiceAddress([]byte(`<Envelope><Body /></Envelope>`)); err == nil {
|
|
t.Fatal("missing media service accepted")
|
|
}
|
|
}
|