本文整理汇总了Golang中github.com/twstrike/coyim/xmpp.NewConn函数的典型用法代码示例。如果您正苦于以下问题:Golang NewConn函数的具体用法?Golang NewConn怎么用?Golang NewConn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewConn函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Test_WatchStanzas_getsVersionInfoIQ
func (s *SessionXmppSuite) Test_WatchStanzas_getsVersionInfoIQ(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='get' from='abc' to='cde'><query xmlns='jabber:iq:version'/></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
connStatus: DISCONNECTED,
}
sess.conn = conn
stanzaChan := make(chan data.Stanza, 1)
stanza, _ := conn.Next()
stanzaChan <- stanza
sess.receiveStanza(stanzaChan)
c.Assert(string(mockIn.write), Equals, ""+
"<iq to='abc' from='[email protected]/foo' type='result' id=''>"+
"<query xmlns=\"jabber:iq:version\">"+
"<name>testing</name>"+
"<version>version</version>"+
"<os>none</os>"+
"</query>"+
"</iq>")
}
示例2: Test_WatchStanzas_iq_set_roster_withFromContainingJid
func (s *SessionXmppSuite) Test_WatchStanzas_iq_set_roster_withFromContainingJid(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='set' from='[email protected]/foo' to='cde'><query xmlns='jabber:iq:roster'/></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
assertLogContains(c, observer, events.Log{
Level: events.Warn,
Message: "Failed to parse roster push IQ",
})
}
示例3: Test_WatchStanzas_presence_unavailable_forNoneKnownUser
func (s *SessionXmppSuite) Test_WatchStanzas_presence_unavailable_forNoneKnownUser(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:presence xmlns:client='jabber:client' from='[email protected]/balcony' to='[email protected]' type='unavailable'><client:status>going on vacation</client:status></client:presence>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
select {
case ev := <-observer:
switch ev.(type) {
case events.Presence:
c.Error("Received presence event")
return
default:
// ignore
}
case <-time.After(1 * time.Millisecond):
return
}
}
示例4: Test_WatchStanzas_failsOnUnrecognizedIQ
func (s *SessionXmppSuite) Test_WatchStanzas_failsOnUnrecognizedIQ(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='something'></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
for {
select {
case ev := <-observer:
t := ev.(events.Log)
if t.Level != events.Info {
continue
}
c.Assert(t.Message, Equals, "unrecognized iq: &data.ClientIQ{XMLName:xml.Name{Space:\"jabber:client\", Local:\"iq\"}, From:\"\", ID:\"\", To:\"\", Type:\"something\", Error:data.ClientError{XMLName:xml.Name{Space:\"\", Local:\"\"}, Code:\"\", Type:\"\", Any:xml.Name{Space:\"\", Local:\"\"}, Text:\"\"}, Bind:data.BindBind{XMLName:xml.Name{Space:\"\", Local:\"\"}, Resource:\"\", Jid:\"\"}, Query:[]uint8{}}")
return
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
return
}
}
}
示例5: Test_WatchStanzas_getsDiscoInfoIQ
func (s *SessionXmppSuite) Test_WatchStanzas_getsDiscoInfoIQ(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='get' from='abc' to='cde'><query xmlns='http://jabber.org/protocol/disco#info'/></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
connStatus: DISCONNECTED,
}
sess.conn = conn
stanzaChan := make(chan data.Stanza, 1)
stanza, _ := conn.Next()
stanzaChan <- stanza
sess.receiveStanza(stanzaChan)
c.Assert(string(mockIn.write), Equals, ""+
"<iq to='abc' from='[email protected]/foo' type='result' id=''>"+
"<query xmlns=\"http://jabber.org/protocol/disco#info\">"+
"<node></node>"+
"<identity xmlns=\"http://jabber.org/protocol/disco#info\" category=\"client\" type=\"pc\" name=\"[email protected]\"></identity>"+
"</query>"+
"</iq>")
}
示例6: Test_WatchStanzas_handlesUnknownMessage
func (s *SessionXmppSuite) Test_WatchStanzas_handlesUnknownMessage(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<bind:bind xmlns:bind='urn:ietf:params:xml:ns:xmpp-bind'></bind:bind>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
for {
select {
case ev := <-observer:
t := ev.(events.Log)
if t.Level != events.Info {
continue
}
c.Assert(t.Message, Equals, "RECEIVED {urn:ietf:params:xml:ns:xmpp-bind bind} &{{urn:ietf:params:xml:ns:xmpp-bind bind} }")
return
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
return
}
}
}
示例7: Test_WatchStanzas_warnsAndExitsOnBadStanza
func (s *SessionXmppSuite) Test_WatchStanzas_warnsAndExitsOnBadStanza(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<clientx:message xmlns:client='jabber:client' to='[email protected]' from='[email protected]' type='chat'><client:body>something</client:body></client:message>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
select {
case ev := <-observer:
t := ev.(events.Log)
c.Assert(t.Message, Equals, "error reading XMPP message: unexpected XMPP message clientx <message/>")
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
}
}
示例8: Test_HandleConfirmOrDeny_succeedsOnAllowedAndAskBack
func (s *SessionXmppSuite) Test_HandleConfirmOrDeny_succeedsOnAllowedAndAskBack(c *C) {
mockIn := &mockConnIOReaderWriter{}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
called := 0
sess := &session{
r: roster.New(),
sessionEventHandler: &mockSessionEventHandler{
//warn: func(v string) {
// called++
//},
},
}
sess.conn = conn
sess.r.SubscribeRequest("[email protected]", "123", "")
sess.HandleConfirmOrDeny("[email protected]", true)
c.Assert(called, Equals, 0)
c.Assert(string(mockIn.write), Matches, "<presence id='123' to='[email protected]' type='subscribed'/><presence id='[0-9]+' to='[email protected]' type='subscribe'/>")
_, inMap := sess.r.GetPendingSubscribe("[email protected]")
c.Assert(inMap, Equals, false)
}
示例9: Test_WatchStanzas_iq_set_roster_setsExistingRosterItem
func (s *SessionXmppSuite) Test_WatchStanzas_iq_set_roster_setsExistingRosterItem(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='set' to='cde'><query xmlns='jabber:iq:roster'>" +
"<item jid='[email protected]' name='Romeo' subscription='both'>" +
"<group>Friends</group>" +
"</item>" +
"</query></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
called := 0
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
sess.r.AddOrReplace(peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Jill", Group: []string{"Foes"}}, sess.GetConfig()))
sess.r.AddOrReplace(peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Mo", Group: []string{"Foes"}}, sess.GetConfig()))
sess.watchStanzas()
c.Assert(called, Equals, 0)
c.Assert(sess.r.ToSlice(), DeepEquals, []*roster.Peer{
peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Jill", Group: []string{"Foes"}}, sess.GetConfig()),
peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Romeo", Group: []string{"Friends"}}, sess.GetConfig()),
})
}
示例10: Test_WatchStanzas_iq_set_roster_withBadFrom
func (s *SessionXmppSuite) Test_WatchStanzas_iq_set_roster_withBadFrom(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='set' from='[email protected]' to='cde'><query xmlns='jabber:iq:roster'/></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
stanzaChan := make(chan data.Stanza, 1)
stanza, _ := conn.Next()
stanzaChan <- stanza
sess.receiveStanza(stanzaChan)
assertLogContains(c, observer, events.Log{
Level: events.Warn,
Message: "Ignoring roster IQ from bad address: [email protected]",
})
c.Assert(string(mockIn.write), Equals, "")
}
示例11: Test_WatchStanzas_iq_set_roster_removesRosterItems
func (s *SessionXmppSuite) Test_WatchStanzas_iq_set_roster_removesRosterItems(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:iq xmlns:client='jabber:client' type='set' to='cde'><query xmlns='jabber:iq:roster'>" +
"<item jid='[email protected]' name='Romeo' subscription='remove'>" +
"<group>Friends</group>" +
"</item>" +
"</query></client:iq>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{
Account: "[email protected]",
},
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
sess.r.AddOrReplace(peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Mo", Group: []string{"Foes"}}, sess.GetConfig()))
sess.r.AddOrReplace(peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Jill", Group: []string{"Foes"}}, sess.GetConfig()))
sess.r.AddOrReplace(peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Mo", Group: []string{"Foes"}}, sess.GetConfig()))
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
c.Assert(sess.r.ToSlice(), DeepEquals, []*roster.Peer{
peerFrom(data.RosterEntry{Jid: "[email protected]", Subscription: "both", Name: "Jill", Group: []string{"Foes"}}, sess.GetConfig()),
})
select {
case ev := <-observer:
switch ev.(type) {
case events.Peer:
c.Error("Received peer event")
return
default:
// ignore
}
case <-time.After(1 * time.Millisecond):
return
}
}
示例12: Test_WatchStanzas_presence_unavailable_forKnownUser
func (s *SessionXmppSuite) Test_WatchStanzas_presence_unavailable_forKnownUser(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:presence xmlns:client='jabber:client' from='[email protected]/balcony' to='[email protected]' type='unavailable'><client:status>going on vacation</client:status></client:presence>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{},
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
sess.r.AddOrReplace(roster.PeerWithState("[email protected]", "somewhere", "", ""))
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
p, _ := sess.r.Get("[email protected]")
c.Assert(p.Online, Equals, false)
for {
select {
case ev := <-observer:
switch t := ev.(type) {
case events.Presence:
c.Assert(t.Gone, Equals, true)
return
default:
//ignore
}
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
return
}
}
}
示例13: Test_WatchStanzas_presence_subscribe
func (s *SessionXmppSuite) Test_WatchStanzas_presence_subscribe(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:presence xmlns:client='jabber:client' from='[email protected]/balcony' to='[email protected]' type='subscribe' id='adf12112'/>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{},
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
sess.watchStanzas()
v, _ := sess.r.GetPendingSubscribe("[email protected]")
c.Assert(v, Equals, "adf12112")
}
示例14: Test_WatchStanzas_receivesAMessage
func (s *SessionSuite) Test_WatchStanzas_receivesAMessage(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:message xmlns:client='jabber:client' type='chat' to='[email protected]/foo' from='[email protected]/somewhere'><client:body>well, hello there</client:body></client:message>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := Factory(
&config.ApplicationConfig{},
&config.Account{InstanceTag: uint32(42)},
xmpp.DialerFactory,
).(*session)
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
for {
select {
case ev := <-observer:
switch t := ev.(type) {
case events.Message:
c.Assert(t.Session, Equals, sess)
c.Assert(t.Encrypted, Equals, false)
c.Assert(t.From, Equals, "[email protected]")
c.Assert(string(t.Body), Equals, "well, hello there")
return
default:
//ignore
}
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
return
}
}
}
示例15: Test_WatchStanzas_presence_regularPresenceIsAdded
func (s *SessionXmppSuite) Test_WatchStanzas_presence_regularPresenceIsAdded(c *C) {
mockIn := &mockConnIOReaderWriter{read: []byte("<client:presence xmlns:client='jabber:client' from='[email protected]/balcony' to='[email protected]'><client:show>dnd</client:show></client:presence>")}
conn := xmpp.NewConn(
xml.NewDecoder(mockIn),
mockIn,
"[email protected]/foo",
)
sess := &session{
config: &config.ApplicationConfig{},
accountConfig: &config.Account{},
r: roster.New(),
connStatus: DISCONNECTED,
}
sess.conn = conn
observer := make(chan interface{}, 1)
sess.Subscribe(observer)
sess.watchStanzas()
st, _, _ := sess.r.StateOf("[email protected]")
c.Assert(st, Equals, "dnd")
for {
select {
case ev := <-observer:
switch t := ev.(type) {
case events.Presence:
c.Assert(t.Gone, Equals, false)
default:
//ignore
}
return
case <-time.After(1 * time.Millisecond):
c.Errorf("did not receive event")
return
}
}
}