From f9357a02c346fe2d3a2d424d19b884e3799f13f7 Mon Sep 17 00:00:00 2001 From: Mitranim Date: Fri, 19 Jun 2015 23:10:50 +0300 Subject: [PATCH] added Reference.Child --- firebase.go | 20 ++++++++++++++++++++ firebase_test.go | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/firebase.go b/firebase.go index c926f2d..678a8fc 100644 --- a/firebase.go +++ b/firebase.go @@ -200,3 +200,23 @@ func (r *Reference) Delete() error { return nil } + +func (r *Reference) Child(path string) *Reference { + url := r.url + + // Append path. + if url[len(url)-1] == '/' { + url = url[:len(url)-1] + } + if path[0] == '/' { + url += path + } else { + url += "/" + path + } + + // Transfer token. + ref := NewReference(url) + ref.token = r.token + + return ref +} diff --git a/firebase_test.go b/firebase_test.go index a0ec8ff..f434182 100644 --- a/firebase_test.go +++ b/firebase_test.go @@ -239,3 +239,23 @@ func TestThatExportWorks(t *testing.T) { r = NewReference(url).Export(true).Export(false) _ = r } + +func TestThatChildWorks(t *testing.T) { + url := "https://SampleChat.firebaseIO-demo.com/users/fred" + + parent := NewReference(url).Auth("secret-token") + + child := parent.Child("name") + if child.url != url+"/name" { + t.Error("Expected child URL to equal", url+"/name", ", got", child.url) + } + + child = parent.Child("/name") + if child.url != url+"/name" { + t.Error("Expected child URL to equal", url+"/name", ", got", child.url) + } + + if child.token != parent.token { + t.Error("Expected child to receive parent's auth token.") + } +}