summaryrefslogtreecommitdiff
path: root/battleNetApi
diff options
context:
space:
mode:
Diffstat (limited to 'battleNetApi')
-rw-r--r--battleNetApi/include/token.hpp11
-rw-r--r--battleNetApi/src/hearthstoneTokenBuilder.cpp2
-rw-r--r--battleNetApi/src/token.cpp13
-rw-r--r--battleNetApi/tests/src/tokenTests.cpp13
4 files changed, 24 insertions, 15 deletions
diff --git a/battleNetApi/include/token.hpp b/battleNetApi/include/token.hpp
index 8b9f95e..4a66c53 100644
--- a/battleNetApi/include/token.hpp
+++ b/battleNetApi/include/token.hpp
@@ -5,13 +5,20 @@
class Token {
public:
- explicit Token(const std::string &iTokenText, const std::chrono::seconds &iExpirationTime);
+ explicit Token(const std::string &iTokenText, const std::chrono::seconds &iLifetime);
std::string text() const;
void setText(const std::string &iTokenText);
- void setExpirationTime(const std::chrono::seconds &iExpirationTime);
+ void setLifetime(const std::chrono::seconds &iLifetime);
bool isExpired();
private:
std::string _tokenText;
std::chrono::seconds _expirationTime;
};
+
+namespace {
+auto currentTime = [] {
+ return std::chrono::duration_cast<std::chrono::seconds>(
+ std::chrono::steady_clock::now().time_since_epoch());
+};
+} // namespace
diff --git a/battleNetApi/src/hearthstoneTokenBuilder.cpp b/battleNetApi/src/hearthstoneTokenBuilder.cpp
index 9509aa6..89466a5 100644
--- a/battleNetApi/src/hearthstoneTokenBuilder.cpp
+++ b/battleNetApi/src/hearthstoneTokenBuilder.cpp
@@ -26,7 +26,9 @@ HearthstoneTokenBuilder &HearthstoneTokenBuilder::buildToken() {
// mCurrentToken = std::make_unique<Token>(...);
return *this;
}
+
std::shared_ptr<Token> HearthstoneTokenBuilder::getToken() { return mCurrentToken; }
+
HearthstoneTokenBuilder &HearthstoneTokenBuilder::allowUpdateSourceFile() {
mUpdateSourceFile = true;
return *this;
diff --git a/battleNetApi/src/token.cpp b/battleNetApi/src/token.cpp
index 6fcef1a..276c334 100644
--- a/battleNetApi/src/token.cpp
+++ b/battleNetApi/src/token.cpp
@@ -1,17 +1,14 @@
#include "token.hpp"
-Token::Token(const std::string &iTokenText, const std::chrono::seconds &iExpirationTime)
- : _tokenText{iTokenText}, _expirationTime{iExpirationTime} {}
+Token::Token(const std::string &iTokenText, const std::chrono::seconds &iLifetime)
+ : _tokenText{iTokenText}, _expirationTime{iLifetime + currentTime()} {}
std::string Token::text() const { return _tokenText; }
void Token::setText(const std::string &iTokenText) { _tokenText = iTokenText; }
-void Token::setExpirationTime(const std::chrono::seconds &iExpirationTime) {
- _expirationTime = iExpirationTime;
+void Token::setLifetime(const std::chrono::seconds &iExpirationTime) {
+ _expirationTime = iExpirationTime + currentTime();
}
-bool Token::isExpired() {
- return _expirationTime <= std::chrono::duration_cast<std::chrono::seconds>(
- std::chrono::steady_clock::now().time_since_epoch());
-}
+bool Token::isExpired() { return _expirationTime <= currentTime(); }
diff --git a/battleNetApi/tests/src/tokenTests.cpp b/battleNetApi/tests/src/tokenTests.cpp
index 89e4039..2e2d5b4 100644
--- a/battleNetApi/tests/src/tokenTests.cpp
+++ b/battleNetApi/tests/src/tokenTests.cpp
@@ -10,11 +10,14 @@
#include <string>
#include <tokenBuilder.hpp>
-TEST_CASE("Retrieve API Token", "[generateApiToken]") {
+TEST_CASE("Token", "[Token is expired]") {
const std::string aCredentialsFile{"../tests/resources/credentials.json"};
Token aToken(aCredentialsFile, std::chrono::seconds(0));
- const std::string aTokenContent{aToken.text()};
- const std::string::size_type aTokenSize{aTokenContent.size()};
- REQUIRE(aTokenSize >= 30);
- REQUIRE(aTokenSize <= 40);
+ REQUIRE(aToken.isExpired());
+}
+
+TEST_CASE("Token", "[Token is not expired]") {
+ const std::string aCredentialsFile{"../tests/resources/credentials.json"};
+ Token aToken(aCredentialsFile, std::chrono::seconds(20));
+ REQUIRE_FALSE(aToken.isExpired());
}