license: Implemented new license format
* Implemented new format splitting user, version, and usage period into separate lines * Refactored all classes: License, LicenseGenerator, LicenseChecker * Removed redundant license check hash from ApplicationSettings, don't generate, store and check it anymore * Moved license checking and encoding logic to LicenseChecker * Moved default for license generation to main.cpp * Refactored license checking logic in whole app, removed involved message types * Added LicenseCheckerTestSuite for checking all legacy and current license types * Generate new license type lifelong
This commit is contained in:
@@ -0,0 +1,634 @@
|
||||
#include <cxxtest/TestSuite.h>
|
||||
|
||||
#include "License.h"
|
||||
#include "LicenseChecker.h"
|
||||
#include "Version.h"
|
||||
|
||||
class LicenseCheckerTestSuite : public CxxTest::TestSuite
|
||||
{
|
||||
public:
|
||||
|
||||
void test_check_empty_license()
|
||||
{
|
||||
LicenseChecker::loadPublicKey();
|
||||
LicenseChecker::LicenseState state = LicenseChecker::checkLicenseString("");
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::EMPTY);
|
||||
}
|
||||
|
||||
void test_check_malformed_license()
|
||||
{
|
||||
LicenseChecker::loadPublicKey();
|
||||
LicenseChecker::LicenseState state = LicenseChecker::checkLicenseString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKpvMMWlY7aWaMQY/AScwUo/nhqFdj+skS46v+7QHoj7X6qS+W
|
||||
IErtt71WhVoqM8eki8IS+BDuO+TyLCAKhpNYQhvgykgfAx16T3ypD4A
|
||||
4/DKGZbm/ZzZ3J5KD30Ko7pZfsgCnBMZu+VHSkoxtntDCzmhNySF4yo
|
||||
fiDVhR9NYeWjgd0jtj1+dpBfjmQeXLgf4DqtYvgW446pUfEIIur174y
|
||||
ffYziDA9VhIpgx2ZEYfFFXWNY+0esAkN389UxZ5UgQcs0LHTdEBphYO
|
||||
oZJKdZdPbF+zSPwUeRej9SkCOpionrJ9lvVMo3p2pro0boeM4/bAs/p
|
||||
MyEDaYFJdoazS3T8CXB0oPdEoyvYR6kOBZCw9YeW1Ud0azN8BeMx68c
|
||||
gwitGhNQeI9A==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::MALFORMED);
|
||||
}
|
||||
|
||||
void test_check_invalid_license()
|
||||
{
|
||||
LicenseChecker::loadPublicKey();
|
||||
LicenseChecker::LicenseState state = LicenseChecker::checkLicenseString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKpvMMWlY7aWaMQY/AScwUo/nhqFdj+skS46v+7QHoj7X6qS+W
|
||||
IErtt71WhVoqM8eki8IS+BDuO+TyLCAKhpNYQhvgykgfAx16T3ypD4A
|
||||
4/DKGZbm/ZzZ3J5KD30Ko7pZfsgCnBMZu+VHSkoxtntDCzmhNySF4yo
|
||||
fiDVhR9NYeWjgd0jtj1+dpBfjmQeXLgf4DqtYvgW446pUfEIIur174y
|
||||
ffYziDA9VhIpgx2ZEYfFFXWNY+0esAkN389UxZ5UgQcs0LHTdEBphYO
|
||||
oZJKdZdPbF+zSPwUeRej9SkCOpionrJ9lvVMo3p2pro0boeM4/bAs/p
|
||||
MyEDaYFJdoazS3T8CXB0oPdEoyvYR6kOBZCw9YeW1Ud0azN8BeMx68C
|
||||
gwitGhNQeI9A==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::INVALID);
|
||||
}
|
||||
|
||||
void test_check_license_without_start_end()
|
||||
{
|
||||
LicenseChecker::loadPublicKey();
|
||||
LicenseChecker::LicenseState state = LicenseChecker::checkLicenseString(
|
||||
R"(
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKpvMMWlY7aWaMQY/AScwUo/nhqFdj+skS46v+7QHoj7X6qS+W
|
||||
IErtt71WhVoqM8eki8IS+BDuO+TyLCAKhpNYQhvgykgfAx16T3ypD4A
|
||||
4/DKGZbm/ZzZ3J5KD30Ko7pZfsgCnBMZu+VHSkoxtntDCzmhNySF4yo
|
||||
fiDVhR9NYeWjgd0jtj1+dpBfjmQeXLgf4DqtYvgW446pUfEIIur174y
|
||||
ffYziDA9VhIpgx2ZEYfFFXWNY+0esAkN389UxZ5UgQcs0LHTdEBphYO
|
||||
oZJKdZdPbF+zSPwUeRej9SkCOpionrJ9lvVMo3p2pro0boeM4/bAs/p
|
||||
MyEDaYFJdoazS3T8CXB0oPdEoyvYR6kOBZCw9YeW1Ud0azN8BeMx68c
|
||||
gwitGhNQeI9A==
|
||||
)"
|
||||
);
|
||||
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_license_encoding()
|
||||
{
|
||||
LicenseChecker::loadPublicKey();
|
||||
LicenseChecker::setCurrentLicenseString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKpvMMWlY7aWaMQY/AScwUo/nhqFdj+skS46v+7QHoj7X6qS+W
|
||||
IErtt71WhVoqM8eki8IS+BDuO+TyLCAKhpNYQhvgykgfAx16T3ypD4A
|
||||
4/DKGZbm/ZzZ3J5KD30Ko7pZfsgCnBMZu+VHSkoxtntDCzmhNySF4yo
|
||||
fiDVhR9NYeWjgd0jtj1+dpBfjmQeXLgf4DqtYvgW446pUfEIIur174y
|
||||
ffYziDA9VhIpgx2ZEYfFFXWNY+0esAkN389UxZ5UgQcs0LHTdEBphYO
|
||||
oZJKdZdPbF+zSPwUeRej9SkCOpionrJ9lvVMo3p2pro0boeM4/bAs/p
|
||||
MyEDaYFJdoazS3T8CXB0oPdEoyvYR6kOBZCw9YeW1Ud0azN8BeMx68c
|
||||
gwitGhNQeI9A==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
LicenseChecker::LicenseState state = LicenseChecker::checkCurrentLicense();
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::VALID);
|
||||
|
||||
LicenseChecker::setEncodeKey("test_key");
|
||||
std::string encodedLicenseString = LicenseChecker::getCurrentLicenseStringEncoded();
|
||||
|
||||
LicenseChecker::setEncodeKey("test_key_new");
|
||||
state = LicenseChecker::setCurrentLicenseStringEncoded(encodedLicenseString);
|
||||
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::MALFORMED);
|
||||
|
||||
LicenseChecker::setEncodeKey("test_key");
|
||||
state = LicenseChecker::setCurrentLicenseStringEncoded(encodedLicenseString);
|
||||
|
||||
TS_ASSERT_EQUALS(state, LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_version_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 1
|
||||
Licensed product version: up to 2020.2
|
||||
Licensed usage period: unlimited
|
||||
-
|
||||
$9$AQAKrGHpbkd9I+FVXZ8YtKK7rJePuPqJcWwaLoNYze14fRNiIBQV
|
||||
QcelksnNcsztdUVCSp1MPkEbuWHkhR74m5qJ3wECnMekfVmP3GhbvwL
|
||||
cqAEyrpR4PrZCRM2oxEgcRVk6QrPM9pHYPaPHe8sV74odOGQtHUrEW6
|
||||
N8ZNL0NMLzSxurD/hXdDLdgxya9UptYIJ6c2Bbu33xJ87Ofs07pptc0
|
||||
4VzBXJYG5iKIbmQAnrU6KOBL5iIZ11/sM8VbkTw+nSySI4yr3/f8BWe
|
||||
7PhDAmhvDTX9aMMfpaXXeL3PyC/023FwyAqimB1vzoo28Pm1p1tN9mF
|
||||
l7Ci+UazTnVY34DLVoXYUaDVlt8t8VYq05Z7f6sfcGtqpthuevGatM0
|
||||
e6G8hqqTc+CQ==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
Version version = Version::getApplicationVersion();
|
||||
Version::setApplicationVersion(Version(2020, 2, 11, "asdfasdf"));
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 1);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
|
||||
Version::setApplicationVersion(version);
|
||||
}
|
||||
|
||||
void test_check_version_license_expired()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 1
|
||||
Licensed product version: up to 2018.2
|
||||
Licensed usage period: unlimited
|
||||
-
|
||||
$9$AQAKshj0tavIV6xR/dL9nXxaxib80g8Kxho0CGpvdypb4xujP5nw
|
||||
mIQi3TiVrBTCszJLONCdnhyzotj1R370JPHWa/FFbGqABhexI5PGdIb
|
||||
3Pa1EqQP9otCJZvDhQTxkm2Ev3zFEgDsA8njBQjr09Blcbt6F9F5zpJ
|
||||
Ld75PRPLgvVmrxJfwOOg0tYQ/WrKzmm68gcF7XUHS1N7QDSrxjkqihu
|
||||
xvHd6PoQSmX8pbNpYbkNF6N1T7rR5B8o7BnCc1PEw13J6k8CsomyQ4Q
|
||||
qg2qAz0IOXk+r7ZagNvR9XedqcytIu6e0u48ujpEUv+1TSj7VBrOq1a
|
||||
5La45aDoFn2XgdX/mlJh4RPeTEtg6u06PHf4pHFWiOXyKcvvAWuy7GT
|
||||
YeDldWiy3iwA==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
Version version = Version::getApplicationVersion();
|
||||
Version::setApplicationVersion(Version(2018, 3, 11, "asdfasdf"));
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 1);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::EXPIRED);
|
||||
|
||||
Version::setApplicationVersion(version);
|
||||
}
|
||||
|
||||
void test_check_period_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKpvMMWlY7aWaMQY/AScwUo/nhqFdj+skS46v+7QHoj7X6qS+W
|
||||
IErtt71WhVoqM8eki8IS+BDuO+TyLCAKhpNYQhvgykgfAx16T3ypD4A
|
||||
4/DKGZbm/ZzZ3J5KD30Ko7pZfsgCnBMZu+VHSkoxtntDCzmhNySF4yo
|
||||
fiDVhR9NYeWjgd0jtj1+dpBfjmQeXLgf4DqtYvgW446pUfEIIur174y
|
||||
ffYziDA9VhIpgx2ZEYfFFXWNY+0esAkN389UxZ5UgQcs0LHTdEBphYO
|
||||
oZJKdZdPbF+zSPwUeRej9SkCOpionrJ9lvVMo3p2pro0boeM4/bAs/p
|
||||
MyEDaYFJdoazS3T8CXB0oPdEoyvYR6kOBZCw9YeW1Ud0azN8BeMx68c
|
||||
gwitGhNQeI9A==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 3);
|
||||
TS_ASSERT(license.getTimeLeft() >= 0);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_period_license_expired()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 3
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2018-Dec-06
|
||||
-
|
||||
$9$AQAKkgTBy1koMv8CusfbUVWyMQtbTc67dSMTv+96bnVWSQdc/Bti
|
||||
O8300TO2SWEVuyMo/BQkmXTnEFWLtwnAPqtAJXLR4oDTqlHUNs8Ur5q
|
||||
iL6dMVsiyp41EHrzuof1/u+pgX03kCyIgD6TAn42En3+2pgo1zhDxnx
|
||||
vaBxQTUcUW8+kJyNdSlJ6E2DgwGX2uXmf8MF8nsJtwHhOe/3qyV6fm0
|
||||
PtXmWwjesNX7qGA8L+pcZKsB6AdC4dEJ71iFr8u/O1i8ab0v5xorJM3
|
||||
zJ40jE0kcucpag5sW43ch0eX6PntXSwXuFfaQ7gTUH6qYTvxqIFUZGW
|
||||
r0TrPuhiyxHS80ki5QApv9AShXlt3LRM41SJSCuv71Z30kGIVV6Itoo
|
||||
+rtjllrh9TBA==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 3);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -1);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::EXPIRED);
|
||||
}
|
||||
|
||||
void test_check_site_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: unlimited
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKM0lWahp0xKiqVObgsjtpg9LNh+knuPSDbbv/6LuJqbZYA2F2
|
||||
ibdICkHLfDTIiUjqXdmLbNWbavWwcrtOnzw7zxExIyCcJPXrQxUjmRU
|
||||
kvVe+mPlN+4Re1jFBmCY18X13fb9JSShOjWGEnpCR/o6Fq1EKoOoYg1
|
||||
NyWoVDy+Jv/Tr0Zr1/xFyhQJMw3dr0LiCrmYG0+J9P4lndI7MI4QG3z
|
||||
0e625imrkJVDJsRUk3V9YXu8XxJTpSfc8tZjolzxCpaAKNzzCQeghdh
|
||||
hwAEZEqUd3+ULN6lY36laCzRSMOts6506wMMhv4wzT65h8RRrrgJJjw
|
||||
lnOALOwf+YcHvMpHWBBL18utvvxn1dWUdywBXPfmJnncglP7Cg+/B6q
|
||||
gPxec/V8S5mA==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 0);
|
||||
TS_ASSERT(license.getTimeLeft() >= 0);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_site_license_expired()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: unlimited
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2018-Dec-08
|
||||
-
|
||||
$9$AQAKi2K2OESpqYwzOE6EPg5ltiYYNV3FYzGT9O/mf8fp8+ovGL5T
|
||||
aJjHkXuWYsZ71yG4SH7DKrtSKc3nSHT6eBKpxkGeQ/50KMIqbFHUNWm
|
||||
qsv7mzFeKeoA7e9Hf2X/RfWqBmHTV8eIhaE4qqMKF5DY+fG9Y1qlHEs
|
||||
oeKJCM6BaxYiPZjG4sMKG2K/6AkT4TbNaHjrBktlE1l4ad8mW1xBXn5
|
||||
p6ph0waObobOioNZINvLuRrIModAnfjCFVdKtL+HzM8Kg/2Tx7ZPCQV
|
||||
4Tvj6Jm61OiXAdgZcIoL1DYsZWqIb3HFIJQw7Q+IGsKFgh64oNwh/WP
|
||||
LZi4XroeDeOJnhX5+sfr0WZoV2BKCsNCsvKNHTtEG9ZGtKSgp8ktgBt
|
||||
XCElsg55RjkQ==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 0);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -1);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::EXPIRED);
|
||||
}
|
||||
|
||||
void test_check_test_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Test License
|
||||
Licensed number of users: unlimited
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2021-Dec-10
|
||||
-
|
||||
$9$AQAKrvzvSMvN038BfcgVNT8rN6/X4pFbYKpU0gMSeH62+Vsd55MC
|
||||
E6rIwc+vMlHlLzHZsn6+YpSsPX2Hs31JUpkRTAb2X2ln0SZU2mZUL/V
|
||||
SD4trO/jCUoTaC7FbaXD6F1A8DWuJos706g/MaNWyXc0tUnd3N6HSnZ
|
||||
UEX0HHQXaKatZh5imexO5NncQtdhObU9PFo0UhXTxQ9wFxrKFzgyIIl
|
||||
EQqQq4ExHzMz41wDD/476lf43W8O6tfbSRaO2aSlALy/3IqnrZBjllm
|
||||
girrswPR5tAq8JCL8hxenkajWK7plnlg4tUuvpvnj/fif/2Km5v7Xls
|
||||
+MDZZ7EC7hRX2UUHmIWAnCaiv25k/NHfu1GBQ19mS8mWYnRmxXOccAO
|
||||
qCavX9fMG6pQ==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Test License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 0);
|
||||
TS_ASSERT(license.getTimeLeft() >= 0);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_test_license_expired()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Test License
|
||||
Licensed number of users: unlimited
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: until 2018-Dec-06
|
||||
-
|
||||
$9$AQAKML9uOsAwGbhR/GdF+idZBjBwcvYuNvym5yLvTweDEOs70IHy
|
||||
NQBPgvq3TOUPtmKc3DE1lHLB7Fe2/8VNwcg1hkncle9fKh44WGuNIRX
|
||||
dFPJ40Hl+be8ekrjyKwz1x9fb85mkzheiDQUEC8QOHUUdJJoETgp3Il
|
||||
dcLDe/UL7Sq3/GpPDH+SaThMM5y+3tluf7yO/4qqRuzbV68YW/DTHEL
|
||||
47/LvlW1iAypllpeJD7igpCzUEiRYa2m2pSmpOiS0FoXaZ0jhr0LNXm
|
||||
C6/zLqHZ4xRnUmhDlmTf1mfybi86xOiPeZFfvSVnv5HPtf5Nsk2wGkW
|
||||
pwim1/hpoCxGJ4hiN9a3cbgnjtqG7yTbfMIiBAxM4JcHt2Dzhs3+r6d
|
||||
gabQRg1nODDw==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Test License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 0);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -1);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(license.isExpired());
|
||||
TS_ASSERT(license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::EXPIRED);
|
||||
}
|
||||
|
||||
void test_check_lifelong_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Jane Doe
|
||||
License type: Commercial License
|
||||
Licensed number of users: 2
|
||||
Licensed product version: unlimited
|
||||
Licensed usage period: unlimited
|
||||
-
|
||||
$9$AQAKIZaofFkJU73SLfokexujrBlm792b2tF+oQksC40P+Z8vUtgT
|
||||
hesYyYrRxFXK2OALm7zLkdeJYNwC60+oJx0wA19D6PLQo09d5Tf3hHx
|
||||
0pkdV0J+2NwidLoJX6ZHWB2KQxg1Vg0yvczZs4uzNLLd6JRdBubN3XF
|
||||
0hO9m/sYLMRzeh5sn7WJjV2M/BR1bGmgmY0itW0UXw+hYGZaViiDo1f
|
||||
7erXFcZq5TJwhYM447TjoWa+KDjPd/hCohO8SKKtJ33qWWuTfJNPL5q
|
||||
7iqyQemOnBOtW+nXHmg/89F+YXoyGeICxinnFs1kmqMey94s/08OUcB
|
||||
GSlQ649gX2BuuACmHR/JW/0SY4ik/DgkesVHuRWXD8VTq8cOBMCKjOe
|
||||
YHCqvUCFHVMA==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 2);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_long_name()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
License holder: Janestanasolinaria Doestopolstiminikovasotanibanastovic
|
||||
License type: Commercial License
|
||||
Licensed number of users: 2
|
||||
Licensed product version: up to 2023.4
|
||||
Licensed usage period: unlimited
|
||||
-
|
||||
$9$AQAKD2gin+JhXldRL5AkVpoTgNHibszdfWpKSgm+p5zC5wCYiGWd
|
||||
Vtd8nzkj4Gys3liNW5K1Yu/bfgcoOwjBOh6ZpNXCs9MQaNtfHTNeNXA
|
||||
6vKwBCyrKruO1Ez1y+63pYN+erVtrxIpy6bTxuSIuD115j++V7sDE6f
|
||||
oMCTYVAtMoPBxkIDrMB/dRDVu+ZPffAtPl9qA/1Okl697UpFLIC5kOP
|
||||
YoJmSgwXC0k0lOvF7OyzR95oKUjQifdWgnEH5kpPJ3DqcKsAvSh0bQj
|
||||
Rmk10RSZo1OmjgYEssKlD04BZMWsgKEeNHVAkovY6mxR4160wOuELxP
|
||||
Y8odKqEzRcdV/ZWysqZEGPpdeBIqeBd4ZVgN6kEDZqpGktGZL0LThEB
|
||||
Muf9wa0CwXuw==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Janestanasolinaria Doestopolstiminikovasotanibanastovic");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 2);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
}
|
||||
|
||||
void test_check_old_format_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
Licensed to: Jane Doe
|
||||
License type: Commercial License (5 users)
|
||||
Valid up to version: 2020.2
|
||||
-
|
||||
$9$AQAKDowaE3jU5qows5JQrqt6iEfM+BKO0uCgN8lYCIAy/qUzfDsI
|
||||
S8pZMKD9fBNP0QHK1RNAaiwD8qszcnksDHcURUelnCBk2fpAd4YdR2a
|
||||
IU6CBwkPWAT92K7KE5OfWV2h2odlSTirPb99WqWYnEngibVeBA4cGZD
|
||||
k+fSpsPz3Dwg66dNUKajf+snii5wE9qa/2XYhV3gLm3Utls2jhpom31
|
||||
9Ri0uP/5b8Zx8ZWtlT5BDoS8LvVBsOtBe788DSmmF+7hA8xLel+VRvt
|
||||
mNzs/MWbKg+m0JrIdwaqhDlx+Fpc+rlhb0uWTJxKO2ruRkLcXkZ4ZbS
|
||||
fnOHl2FZZgsRjnT0AbI9hHNf3clXuJsu85ymGa9ZESBvKRmYWvjpdcs
|
||||
0yeCOCcxABmw==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
Version version = Version::getApplicationVersion();
|
||||
Version::setApplicationVersion(Version(2019, 1, 11, "asdfasdf"));
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 5);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
|
||||
Version::setApplicationVersion(version);
|
||||
}
|
||||
|
||||
void test_check_old_format_license_expired()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
Licensed to: Jane Doe
|
||||
License type: Commercial License (3 users)
|
||||
Valid up to version: 2018.1
|
||||
-
|
||||
$9$AQAK2j5OkBlxfT/3y0XTbMUu/tRchYJxfD1dHgSFXJMXeFPN9h1N
|
||||
RVewaFTRWub12WkRSq4rHaEt6MKZCtO3ntj8bGJxuvH4ggridXBoJjP
|
||||
nkHGPMlUvrdbhs/O7uaWvVXf+n7YrZPxeBBdHiXEUI2AaNbig5FzCeS
|
||||
Gt31yDkLjSkNwdR4zJGoAB2zWfhxFLIzBXv6z+rToBy71hzMbRHnUX2
|
||||
B8zkBAt12QVCZszbV1XJ8LqOhxkGKdo6RsieBc5s2HJB16IFf0gcxkL
|
||||
2FRzN6wMlTqs4K4pk8+kxwzB+Ywm+griLgzZo1jbg0JUm4Ou9nppaht
|
||||
m4mgTH3FBGtob6Spi7H8hGNGgrT1gRmnHLyomwPfKXKuO/snvK3CZCB
|
||||
yBAHSwjidKqg==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
Version version = Version::getApplicationVersion();
|
||||
Version::setApplicationVersion(Version(2019, 1, 11, "asdfasdf"));
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 3);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::EXPIRED);
|
||||
|
||||
Version::setApplicationVersion(version);
|
||||
}
|
||||
|
||||
void test_check_one_hundred_year_testimonial_license()
|
||||
{
|
||||
License license;
|
||||
bool ok = license.loadFromString(
|
||||
R"(-----BEGIN LICENSE-----
|
||||
Product: Sourcetrail
|
||||
Licensed to: Jane Doe
|
||||
License type: Commercial License (1 Seat)
|
||||
Valid up to version: 2117.2
|
||||
-
|
||||
$9$AQAKhOnW2QeCuuNbHLpUN7CT7DE/FRuOvEOEcHDNOn7yGs0CUIMS
|
||||
Ox9zCpz0xH/XsNmL6NTyS3P4DOm9snvaJZM90ttr3nxy4Dv3IRWVXvg
|
||||
OsvwbkYYC+N2WUKJ+ahk8zU7Uz179tdX2FLbce6/xcOi8Utv3thWWWs
|
||||
EbV62Ja3DS7Qt9Oq7ui+9PrpvPmsc81yK5g993vOsZkPuOuoE8KNX1m
|
||||
Dhl9UxaBZfmfQVtiAWx1vP8zCJ4nnANgfAAKPBXfYyuvf8/+GDC7CLo
|
||||
9e5e0swhcMt0z0DfKdwR59sQPZnXSZyouW5GzTUi2E8nw5IStxi3/GX
|
||||
z3TR0g8ERzP07KrzdYklfYv+cxtlev/H869p0USn5kPBwW8+ZFX+5Id
|
||||
8CVzujNAz//w==
|
||||
-----END LICENSE-----)"
|
||||
);
|
||||
|
||||
Version version = Version::getApplicationVersion();
|
||||
Version::setApplicationVersion(Version(2019, 1, 11, "asdfasdf"));
|
||||
|
||||
TS_ASSERT(ok);
|
||||
TS_ASSERT_EQUALS(license.getUser(), "Jane Doe");
|
||||
TS_ASSERT_EQUALS(license.getType(), "Commercial License");
|
||||
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 1);
|
||||
TS_ASSERT_EQUALS(license.getTimeLeft(), -2);
|
||||
TS_ASSERT(license.isComplete());
|
||||
TS_ASSERT(!license.isEmpty());
|
||||
TS_ASSERT(!license.isExpired());
|
||||
TS_ASSERT(!license.isTestLicense());
|
||||
|
||||
LicenseChecker::loadPublicKey();
|
||||
TS_ASSERT_EQUALS(LicenseChecker::checkLicense(license), LicenseChecker::LicenseState::VALID);
|
||||
|
||||
Version::setApplicationVersion(version);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user