~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source4/scripting/python/samba/tests/dcerpc/rpcecho.py

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
# Unix SMB/CIFS implementation.
 
4
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
 
5
#   
 
6
# This program is free software; you can redistribute it and/or modify
 
7
# it under the terms of the GNU General Public License as published by
 
8
# the Free Software Foundation; either version 3 of the License, or
 
9
# (at your option) any later version.
 
10
#   
 
11
# This program is distributed in the hope that it will be useful,
 
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
# GNU General Public License for more details.
 
15
#   
 
16
# You should have received a copy of the GNU General Public License
 
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
#
 
19
 
 
20
from samba.dcerpc import echo
 
21
from samba.ndr import ndr_pack, ndr_unpack
 
22
import unittest
 
23
from samba.tests import RpcInterfaceTestCase
 
24
 
 
25
 
 
26
class RpcEchoTests(RpcInterfaceTestCase):
 
27
    def setUp(self):
 
28
        self.conn = echo.rpcecho("ncalrpc:", self.get_loadparm())
 
29
 
 
30
    def test_two_contexts(self):
 
31
        self.conn2 = echo.rpcecho("ncalrpc:", self.get_loadparm(), basis_connection=self.conn)
 
32
        self.assertEquals(3, self.conn2.AddOne(2))
 
33
 
 
34
    def test_abstract_syntax(self):
 
35
        self.assertEquals(("60a15ec5-4de8-11d7-a637-005056a20182", 1), 
 
36
                          self.conn.abstract_syntax)
 
37
 
 
38
    def test_addone(self):
 
39
        self.assertEquals(2, self.conn.AddOne(1))
 
40
 
 
41
    def test_echodata(self):
 
42
        self.assertEquals([1,2,3], self.conn.EchoData([1, 2, 3]))
 
43
 
 
44
    def test_call(self):
 
45
        self.assertEquals(u"foobar", self.conn.TestCall(u"foobar"))
 
46
 
 
47
    def test_surrounding(self):
 
48
        surrounding_struct = echo.Surrounding()
 
49
        surrounding_struct.x = 4
 
50
        surrounding_struct.surrounding = [1,2,3,4]
 
51
        y = self.conn.TestSurrounding(surrounding_struct)
 
52
        self.assertEquals(4 * [0], y.surrounding)
 
53
 
 
54
    def test_manual_request(self):
 
55
        self.assertEquals("\x01\x00\x00\x00", self.conn.request(0, chr(0) * 4))
 
56
 
 
57
    def test_server_name(self):
 
58
        self.assertEquals(None, self.conn.server_name)
 
59
 
 
60
 
 
61
class NdrEchoTests(unittest.TestCase):
 
62
    def test_info1_push(self):
 
63
        x = echo.info1()
 
64
        x.v = 42
 
65
        self.assertEquals("\x2a", ndr_pack(x))
 
66
 
 
67
    def test_info1_pull(self):
 
68
        x = ndr_unpack(echo.info1, "\x42")
 
69
        self.assertEquals(x.v, 66)