Remove subscription levels; license valid = subscribed
This commit is contained in:
@@ -72,19 +72,19 @@ TEST(ApiClientTest, ParseFrequenciesJsonSkipsMissingId) {
|
||||
EXPECT_EQ(out[0].id, 3);
|
||||
}
|
||||
|
||||
TEST(ApiClientTest, ParseLicenseJsonLegacyStringLevel) {
|
||||
TEST(ApiClientTest, ParseLicenseJson) {
|
||||
const std::string body =
|
||||
R"({"key":"ABCD-EFGH-IJKL-MNOP","email_address":"user@example.com","subscription_level":"Basic"})";
|
||||
R"({"key":"ABCD-EFGH-IJKL-MNOP","email_address":"user@example.com"})";
|
||||
|
||||
LicenseInfo info;
|
||||
EXPECT_TRUE(parseLicenseJson(body, info));
|
||||
EXPECT_EQ(info.key, "ABCD-EFGH-IJKL-MNOP");
|
||||
EXPECT_EQ(info.email_address, "user@example.com");
|
||||
EXPECT_EQ(info.subscription_level.name, "Basic");
|
||||
EXPECT_EQ(info.subscription_level.id, 0);
|
||||
}
|
||||
|
||||
TEST(ApiClientTest, ParseLicenseJsonObjectLevel) {
|
||||
TEST(ApiClientTest, ParseLicenseJsonIgnoresSubscriptionFields) {
|
||||
// The active/inactive model has no subscription level. Legacy responses
|
||||
// that still carry subscription_level must parse; the field is ignored.
|
||||
const std::string body =
|
||||
R"({"key":"ABCD-EFGH-IJKL-MNOP","email_address":"user@example.com",)"
|
||||
R"("subscription_level":{"id":2,"name":"Advanced","description":"General + Specific"}})";
|
||||
@@ -93,22 +93,6 @@ TEST(ApiClientTest, ParseLicenseJsonObjectLevel) {
|
||||
EXPECT_TRUE(parseLicenseJson(body, info));
|
||||
EXPECT_EQ(info.key, "ABCD-EFGH-IJKL-MNOP");
|
||||
EXPECT_EQ(info.email_address, "user@example.com");
|
||||
EXPECT_EQ(info.subscription_level.id, 2);
|
||||
EXPECT_EQ(info.subscription_level.name, "Advanced");
|
||||
EXPECT_EQ(info.subscription_level.description, "General + Specific");
|
||||
}
|
||||
|
||||
TEST(ApiClientTest, ParseLicenseJsonFlatLevel) {
|
||||
const std::string body =
|
||||
R"({"key":"ABCD-EFGH-IJKL-MNOP","email_address":"user@example.com",)"
|
||||
R"("subscription_level":"Elite","subscription_level_id":3,)"
|
||||
R"("subscription_level_description":"General + Specific + Precise"})";
|
||||
|
||||
LicenseInfo info;
|
||||
EXPECT_TRUE(parseLicenseJson(body, info));
|
||||
EXPECT_EQ(info.subscription_level.id, 3);
|
||||
EXPECT_EQ(info.subscription_level.name, "Elite");
|
||||
EXPECT_EQ(info.subscription_level.description, "General + Specific + Precise");
|
||||
}
|
||||
|
||||
TEST(ApiClientTest, ParseLicenseJsonRejectsMalformed) {
|
||||
@@ -147,7 +131,7 @@ TEST(ApiClientTest, ExtractErrorMessage) {
|
||||
|
||||
// ─── Offline: real-world payload shapes ────────────────────────────────
|
||||
|
||||
TEST(ApiClientTest, ParseProclamationsHandlesSubscriptionLevelIdNull) {
|
||||
TEST(ApiClientTest, ParseProclamationsToleratesLegacyLevelField) {
|
||||
const std::string body =
|
||||
R"([{"id":"a","name":"Peace","content":"<p>I am peace.</p>","categoryId":5,
|
||||
"solfeggioFrequencyId":5,"subscriptionLevelId":null},
|
||||
@@ -256,33 +240,17 @@ TEST(ApiClientLiveTest, ValidateLicenseSuccessLive) {
|
||||
<< " error=" << result.error_message;
|
||||
EXPECT_EQ(result.info.key, key);
|
||||
EXPECT_EQ(result.info.email_address, email);
|
||||
EXPECT_FALSE(result.info.subscription_level.name.empty());
|
||||
}
|
||||
|
||||
// ─── Live: POST /automations/create/account error paths (harmless) ─────
|
||||
|
||||
TEST(ApiClientLiveTest, CreateAccountMissingEmailLive) {
|
||||
AccountResult result = createAccount("", "Basic", "", liveApiKey());
|
||||
AccountResult result = createAccount("", "", liveApiKey());
|
||||
ASSERT_FALSE(result.ok());
|
||||
EXPECT_EQ(result.status, 400);
|
||||
EXPECT_EQ(result.error_message, "email is required");
|
||||
}
|
||||
|
||||
TEST(ApiClientLiveTest, CreateAccountMissingLevelLive) {
|
||||
AccountResult result = createAccount("test@example.com", "", "", liveApiKey());
|
||||
ASSERT_FALSE(result.ok());
|
||||
EXPECT_EQ(result.status, 400);
|
||||
EXPECT_EQ(result.error_message, "subscription_level is required");
|
||||
}
|
||||
|
||||
TEST(ApiClientLiveTest, CreateAccountInvalidLevelLive) {
|
||||
AccountResult result =
|
||||
createAccount("test@example.com", "NoSuchLevel123", "", liveApiKey());
|
||||
ASSERT_FALSE(result.ok());
|
||||
EXPECT_EQ(result.status, 400);
|
||||
EXPECT_NE(result.error_message.find("not found"), std::string::npos);
|
||||
}
|
||||
|
||||
// ─── Live: POST /automations/create/account success (creates a real
|
||||
// ─── account + emails the user; requires RW_LIVE_ACCOUNT_EMAIL) ────────
|
||||
|
||||
@@ -292,7 +260,7 @@ TEST(ApiClientLiveTest, CreateAccountSuccessLive) {
|
||||
GTEST_SKIP() << "RW_LIVE_ACCOUNT_EMAIL not set";
|
||||
}
|
||||
|
||||
AccountResult result = createAccount(email, "Basic", "RadiantWave Test", liveApiKey());
|
||||
AccountResult result = createAccount(email, "RadiantWave Test", liveApiKey());
|
||||
ASSERT_TRUE(result.ok()) << "status=" << result.status
|
||||
<< " error=" << result.error_message;
|
||||
EXPECT_TRUE(result.body.success);
|
||||
|
||||
Reference in New Issue
Block a user