blob: deec2fd93058ac569206f475edcbdc483115db5f [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "shill/cellular/verizon_subscription_state.h"
#include <memory>
#include <tuple>
#include <vector>
#include <gtest/gtest.h>
using std::make_tuple;
using std::vector;
namespace shill {
class VerizonSubscriptionStateInvalidPcoTest
: public testing::TestWithParam<std::vector<uint8_t>> {};
TEST_P(VerizonSubscriptionStateInvalidPcoTest,
FindVerizonSubscriptionStateFromPco) {
const auto& raw_data = GetParam();
std::unique_ptr<CellularPco> pco = CellularPco::CreateFromRawData(raw_data);
ASSERT_NE(nullptr, pco);
SubscriptionState subscription_state = SubscriptionState::kUnknown;
EXPECT_FALSE(FindVerizonSubscriptionStateFromPco(*pco, &subscription_state));
EXPECT_EQ(SubscriptionState::kUnknown, subscription_state);
}
INSTANTIATE_TEST_SUITE_P(
VerizonSubscriptionStateInvalidPcoTest,
VerizonSubscriptionStateInvalidPcoTest,
testing::Values(
// Verizon-specific PCO not found
vector<uint8_t>({0x27, 0x04, 0x00, 0xAA, 0xBB, 0x00}),
// Malformed Verizon-specific PCO
vector<uint8_t>({0x27, 0x04, 0x00, 0xFF, 0x00, 0x00}),
vector<uint8_t>({0x27, 0x07, 0x00, 0xFF, 0x00, 0x03, 0x13, 0x01, 0x84}),
vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00, 0x04, 0xEE, 0x01, 0x84,
0x00}),
vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00, 0x04, 0x13, 0xEE, 0x84,
0x00}),
vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00, 0x04, 0x13, 0x01, 0xEE,
0x00}),
vector<uint8_t>({
// clang-format off
0x27, 0x09, 0x00, 0xFF, 0x00, 0x05, 0x13, 0x01, 0xEE, 0x00, 0x00
// clang-format on
})));
using VerizonSubscriptionStateTestParams =
std::tuple<std::vector<uint8_t>, // raw data
SubscriptionState>; // expected subscription state
class VerizonSubscriptionStateTest
: public testing::TestWithParam<VerizonSubscriptionStateTestParams> {};
TEST_P(VerizonSubscriptionStateTest, FindVerizonSubscriptionStateFromPco) {
const auto& raw_data = std::get<0>(GetParam());
SubscriptionState expected_subscription_state = std::get<1>(GetParam());
std::unique_ptr<CellularPco> pco = CellularPco::CreateFromRawData(raw_data);
ASSERT_NE(nullptr, pco);
SubscriptionState subscription_state = SubscriptionState::kUnknown;
EXPECT_TRUE(FindVerizonSubscriptionStateFromPco(*pco, &subscription_state));
EXPECT_EQ(expected_subscription_state, subscription_state);
}
INSTANTIATE_TEST_SUITE_P(
VerizonSubscriptionStateTest,
VerizonSubscriptionStateTest,
testing::Values(make_tuple(vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00,
0x04, 0x13, 0x01, 0x84, 0x00}),
SubscriptionState::kProvisioned),
make_tuple(vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00,
0x04, 0x13, 0x01, 0x84, 0x03}),
SubscriptionState::kOutOfCredits),
make_tuple(vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00,
0x04, 0x13, 0x01, 0x84, 0x05}),
SubscriptionState::kUnprovisioned),
make_tuple(vector<uint8_t>({0x27, 0x08, 0x00, 0xFF, 0x00,
0x04, 0x13, 0x01, 0x84, 0xFF}),
SubscriptionState::kUnknown)));
} // namespace shill