1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
//Licensed under the GNU General Public License
#include <iostream>
#include "redirecttest.h"
#include <tqcstring.h>
using namespace std;
RedirectTest::RedirectTest(int argc, char ** argv)
: TQApplication( argc, argv ),
m_transfer(0),
m_task(0)
{
m_root = new Task(0, true);
}
RedirectTest::~RedirectTest()
{
delete m_root;
}
void RedirectTest::Setup()
{
m_transfer = new SnacTransfer;
m_task = new ServerRedirectTask( m_root );
}
void RedirectTest::Teardown()
{
delete m_task;
m_task = 0;
m_transfer = 0;
}
bool RedirectTest::testHandleRedirect()
{
Buffer* b = SetupBuffer(0x0010, "REDF$");
m_transfer->setBuffer(b);
m_task->setService(0x0010);
m_task->setTransfer(m_transfer);
return m_task->handleRedirect();
}
bool RedirectTest::testInvalidService()
{
Buffer* b = SetupBuffer(0x4321, "REDF$");
m_transfer->setBuffer(b);
m_task->setService(0x0010);
m_task->setTransfer(m_transfer);
return !m_task->handleRedirect();
}
bool RedirectTest::testInvalidCookie()
{
Buffer* b = SetupBuffer(0x0010, "");
m_transfer->setBuffer(b);
m_task->setService(0x0010);
m_task->setTransfer(m_transfer);
return !m_task->handleRedirect();
}
bool RedirectTest::testCookieIsSet()
{
Buffer* b = SetupBuffer(0x0010, "grouch");
m_transfer->setBuffer(b);
m_task->setService(0x0010);
m_task->setTransfer(m_transfer);
m_task->handleRedirect();
return !m_task->cookie().isEmpty();
}
Buffer* RedirectTest::SetupBuffer(WORD Service, TQString Cookie)
{
Buffer* b = new Buffer;
b->addTLV16(0x000D, Service);
b->addWord(0x0005);
b->addWord(0x0010);
b->addString("65.86.43.45:5190", 16);
b->addWord(0x0006);
b->addWord(Cookie.length());
b->addString(Cookie.latin1(), Cookie.length());
return b;
}
void RedirectTest::CheckTest(bool TestPassed)
{
if ( TestPassed )
cout << "passed" << endl;
else
cout << "failed" << endl;
}
int main(int argc, char ** argv)
{
RedirectTest a( argc, argv );
a.Setup();
a.CheckTest(a.testHandleRedirect());
a.Teardown();
a.Setup();
a.CheckTest(a.testInvalidService());
a.Teardown();
a.Setup();
a.CheckTest(a.testInvalidCookie());
a.Teardown();
a.Setup();
a.CheckTest(a.testCookieIsSet());
a.Teardown();
}
|