1/*
2 * Copyright 2019, Andrew Lindesay <apl@lindesay.co.nz>.
3 * All rights reserved. Distributed under the terms of the MIT License.
4 */
5
6#include "ValidationUtilsTest.h"
7
8#include <cppunit/TestCaller.h>
9#include <cppunit/TestSuite.h>
10
11#include "ValidationUtils.h"
12
13
14ValidationUtilsTest::ValidationUtilsTest()
15{
16}
17
18
19ValidationUtilsTest::~ValidationUtilsTest()
20{
21}
22
23
24void
25ValidationUtilsTest::TestEmailValid()
26{
27	BString email("weta@example.com");
28
29// ----------------------
30	bool result = ValidationUtils::IsValidEmail(email);
31// ----------------------
32
33	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Email valid", true, result);
34}
35
36
37			void				TestEmailInvalidNoAt();
38			void				TestEmailInvalidNoMailbox();
39			void				TestEmailInvalidNoDomain();
40			void				TestEmailInvalidTwoAts();
41
42void
43ValidationUtilsTest::TestEmailInvalidNoAt()
44{
45	BString email("wetaexample.com");
46
47// ----------------------
48	bool result = ValidationUtils::IsValidEmail(email);
49// ----------------------
50
51	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Email invalid - no @", false, result);
52}
53
54
55void
56ValidationUtilsTest::TestEmailInvalidNoMailbox()
57{
58	BString email("@example.com");
59
60// ----------------------
61	bool result = ValidationUtils::IsValidEmail(email);
62// ----------------------
63
64	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Email invalid - no mailbox", false, result);
65}
66
67
68void
69ValidationUtilsTest::TestEmailInvalidNoDomain()
70{
71	BString email("fredric@");
72
73// ----------------------
74	bool result = ValidationUtils::IsValidEmail(email);
75// ----------------------
76
77	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Email invalid - no domain", false, result);
78}
79
80
81void
82ValidationUtilsTest::TestNicknameValid()
83{
84	BString nickname("erik55");
85
86// ----------------------
87	bool result = ValidationUtils::IsValidNickname(nickname);
88// ----------------------
89
90	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Nickname valid", true, result);
91}
92
93
94void
95ValidationUtilsTest::TestNicknameInvalid()
96{
97	BString nickname("not a Nickname!");
98
99// ----------------------
100	bool result = ValidationUtils::IsValidNickname(nickname);
101// ----------------------
102
103	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Nickname invalid", false, result);
104}
105
106
107void
108ValidationUtilsTest::TestNicknameInvalidBadChars()
109{
110	BString nickname("erik!!10");
111
112// ----------------------
113	bool result = ValidationUtils::IsValidNickname(nickname);
114// ----------------------
115
116	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Nickname invalid (bad chars)",
117		false, result);
118}
119
120
121void
122ValidationUtilsTest::TestPasswordClearValid()
123{
124	BString passwordClear("P4NhelQoad4");
125
126// ----------------------
127	bool result = ValidationUtils::IsValidPasswordClear(passwordClear);
128// ----------------------
129
130	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Password clear valid", true, result);
131}
132
133
134void
135ValidationUtilsTest::TestPasswordClearInvalid()
136{
137	BString passwordClear("only has lower case letters");
138		// needs some numbers / upper case characters in there too
139
140// ----------------------
141	bool result = ValidationUtils::IsValidPasswordClear(passwordClear);
142// ----------------------
143
144	CPPUNIT_ASSERT_EQUAL_MESSAGE("!Password clear invalid", false, result);
145}
146
147
148/*static*/ void
149ValidationUtilsTest::AddTests(BTestSuite& parent)
150{
151	CppUnit::TestSuite& suite = *new CppUnit::TestSuite(
152		"ValidationUtilsTest");
153
154	suite.addTest(
155		new CppUnit::TestCaller<ValidationUtilsTest>(
156			"ValidationUtilsTest::TestEmailValid",
157			&ValidationUtilsTest::TestEmailValid));
158	suite.addTest(
159		new CppUnit::TestCaller<ValidationUtilsTest>(
160			"ValidationUtilsTest::TestNicknameInvalid",
161			&ValidationUtilsTest::TestNicknameInvalid));
162	suite.addTest(
163		new CppUnit::TestCaller<ValidationUtilsTest>(
164			"ValidationUtilsTest::TestNicknameValid",
165			&ValidationUtilsTest::TestNicknameValid));
166	suite.addTest(
167		new CppUnit::TestCaller<ValidationUtilsTest>(
168			"ValidationUtilsTest::TestNicknameInvalidBadChars",
169			&ValidationUtilsTest::TestNicknameInvalidBadChars));
170	suite.addTest(
171		new CppUnit::TestCaller<ValidationUtilsTest>(
172			"ValidationUtilsTest::TestPasswordClearInvalid",
173			&ValidationUtilsTest::TestPasswordClearInvalid));
174	suite.addTest(
175		new CppUnit::TestCaller<ValidationUtilsTest>(
176			"ValidationUtilsTest::TestPasswordClearValid",
177			&ValidationUtilsTest::TestPasswordClearValid));
178
179	parent.addTest("ValidationUtilsTest", &suite);
180}
181