test.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 01:55:12 +0200
changeset 53 2dcfa81100e4
parent 29 e86ee1f4227d
child 57 37ed3c7ac1b6
permissions -rw-r--r--
Some fixes to test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     1
--[[ Copyright 2009 Myhailo Danylenko
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     2
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     3
This program is free software: you can redistribute it and/or modify
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     4
it under the terms of the GNU General Public License as published by
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     5
the Free Software Foundation, either version 2 of the License, or
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     6
(at your option) any later version.
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     7
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     8
This program is distributed in the hope that it will be useful,
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
     9
but WITHOUT ANY WARRANTY; without even the implied warranty of
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    11
GNU General Public License for more details.
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    12
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    13
You should have received a copy of the GNU General Public License
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    14
along with this program.  If not, see <http://www.gnu.org/licenses/>. ]]
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    15
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    16
-- Note, this requires glib module, that is not released yet
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    17
-- (and, probably, will not be released ever), thus, this
13f03e604c8a License notes
Myhailo Danylenko <isbear@ukrpost.net>
parents: 22
diff changeset
    18
-- code is provided only as example.
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    20
local g  = require 'glib'
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
local lm = require 'lm'
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
g.log.handler (
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
	function ( domain, lvl, mesg )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
		print ( mesg )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
	end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    28
local sent = false
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    30
local username, server = arg[1]:match ( '(.+)@(.+)' )
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    31
local password         = arg[2]
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    32
local recipient        = arg[3] or arg[1]
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    33
local fingerprint      = arg[4] or '01:23:45:67:89:ab:cd:ef:fe:dc:ba:98:76:54:32:10'
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    34
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
    35
print ( ("Connectng to %s with username %s\nWill contact %s."):format ( server, username, recipient ) )
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
--[[
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
-- What's goes on, pretty close to C api,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
-- but already some luxury...
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
you_need_your_own_context = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
if you_need_your_own_context then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
	cont = g.main_context.new ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
	conn = lm.connection.new ( server, cont:pointer () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
	cont = g.main_context.default ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
	conn = lm.connection.new ( server )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
if lm.ssl.supported () then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
	conn:port ( 5223 )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
	conn:ssl ( lm.ssl.new ( fingerprint,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
		function (ssl, err)
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
			print ( 'SSL error occured: ' .. err )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
			print ( 'Fingerprint: ' .. ssl:fingerprint () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
			return true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
		end ) )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
print ( 'Opening connection... ' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
res = conn:open (
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
	function ( connection, success )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
		if success then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
			print ( "Authenticating..." )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
			res = connection:authenticate ( username, password, 'llm-test',
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
				function ( connection, success )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
					if success then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
						print ( "Sending..." )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
						
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
						connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    71
							lm.message.new( recipient, 'message' )
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
								:child ( 'body', 'Hello, this is just a test' ) )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
						connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    75
							lm.message.new( recipient, 'iq', 'get' )
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
								:child( 'query', '' ):attribute ( 'xmlns', 'jabber:iq:version' ),
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
							function ( connection, message )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
								node = message:child ( 'query' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
								print ( 'Got response:' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
								print ( '  name:     ', node:child( 'name' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
								print ( '  version:  ', node:child( 'version' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
								print ( '  os:       ', node:child( 'os' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
								sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
							end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
					else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
						print ( "Authenticate failure" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
						sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
					end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
				end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
			print ( 'Authenticate returns ', res )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
		else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
			print ( "Open failure" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
			sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
		end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
	end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
print ( 'Open returns ', res )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
--]]
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
-- Shortened version with convenience lua functions:
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
   102
local conn = lm.connect {
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
	server = server,
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
   104
	port   = 5222,
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
	ssl    = {
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
		fingerprint = fingerprint,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
		validate    = false,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
	},
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
	username = username,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
	password = password,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
	resource = 'llm-test',
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
	onconnect =
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
		function ( connection )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
			print ( 'connected' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
			connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
   117
				lm.message.create { mtype = "message", to = recipient,
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
					body = { 'Hello, this is just a test' },
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
				} )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
			print ( 'sent' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
			connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
   123
				lm.message.create { mtype = "iq-get", to = recipient,
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
					query = { xmlns = "jabber:iq:version" }
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
				},
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
				function ( connection, message )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
					print ( 'received' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
					print ( 'Got response:' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
					print ( '   name:     ', message:path( 'query', 'name' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
					print ( '   version:  ', message:path( 'query', 'version' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
					print ( '   os:       ', message:path( 'query', 'os' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
					sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
				end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
			print ( 'sent' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
		end,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
}
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
53
2dcfa81100e4 Some fixes to test
Myhailo Danylenko <isbear@ukrpost.net>
parents: 29
diff changeset
   138
local cont = g.main_context.default ()
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
print ( 'Entering main loop...' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
while not sent do
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
	cont:iteration ( true )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
print ( 'Closing connection... ' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
conn:close ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
print ( "Bye" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
-- vim: se ts=4: --