[cpp-sp] branch main updated: Factor out test impl of SPRequest.
Scott Cantor
cantor.2 at osu.edu
Wed Jun 4 22:28:21 UTC 2025
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository cpp-sp.
View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=375e1ded8db394348133907e76ae47eb7d163a0d
The following commit(s) were added to refs/heads/main by this push:
new 375e1ded Factor out test impl of SPRequest.
375e1ded is described below
commit 375e1ded8db394348133907e76ae47eb7d163a0d
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jun 4 18:28:13 2025 -0400
Factor out test impl of SPRequest.
---
tests/DummyRequest.h | 73 ++++++++++++++++++++++++++
tests/Makefile.am | 3 ++
tests/impl/XMLAccessControlTests.cpp | 52 ++++++------------
tests/impl/XMLRequestMapperTests.cpp | 35 +-----------
tests/session/impl/MemorySessionCacheTests.cpp | 46 +---------------
5 files changed, 95 insertions(+), 114 deletions(-)
diff --git a/tests/DummyRequest.h b/tests/DummyRequest.h
new file mode 100644
index 00000000..d04e44ef
--- /dev/null
+++ b/tests/DummyRequest.h
@@ -0,0 +1,73 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * DummyRequest.h
+ *
+ * Mock SPRequest class for unit tests.
+ */
+
+#include "AbstractSPRequest.h"
+
+#include <map>
+#include <string>
+
+#define DATA_PATH "./data/session/impl/"
+
+namespace shibsp {
+
+ class DummyRequest : public AbstractSPRequest {
+ public:
+ DummyRequest(const char* uri=nullptr) : AbstractSPRequest(SHIBSP_LOGCAT ".DummyRequest"), m_addr("192.168.0.1") {
+ setRequestURI(uri);
+ }
+ const char* getMethod() const { return nullptr; }
+ const char* getScheme() const { return m_scheme.c_str(); }
+ const char* getHostname() const { return m_hostname.c_str(); }
+ int getPort() const { return m_port; }
+ std::string getContentType() const { return ""; }
+ long getContentLength() const { return -1; }
+ const char* getQueryString() const { return m_query.c_str(); }
+ const char* getRequestBody() const { return nullptr; }
+ std::string getHeader(const char* name) const {
+ return m_requestHeaders.find(name) == m_requestHeaders.end() ? "" : m_requestHeaders.find(name)->second;
+ }
+ std::string getRemoteUser() const { return m_user.c_str(); }
+ std::string getRemoteAddr() const { return m_addr.c_str(); }
+ std::string getAuthType() const { return nullptr; }
+ long sendResponse(std::istream&, long status) { return status; }
+ void clearHeader(const char* name) {}
+ void setHeader(const char* name, const char* value) {}
+ void setResponseHeader(const char* name, const char* value, bool replace=false) {
+ HTTPResponse::setResponseHeader(name, value, replace);
+ m_responseHeaders[name] = value ? value : "";
+ }
+ void setRemoteUser(const char*) {}
+ long returnDecline() { return 200; }
+ long returnOK() { return 200; }
+
+ bool isUseHeaders() const {return true;}
+ bool isUseVariables() const { return false; }
+
+ std::string m_scheme;
+ std::string m_hostname;
+ int m_port;
+ std::string m_query;
+ std::string m_user;
+ std::string m_addr;
+ std::map<std::string,std::string> m_requestHeaders;
+ std::map<std::string,std::string> m_responseHeaders;
+ };
+
+};
\ No newline at end of file
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 6a332cbb..7fb78448 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -9,6 +9,9 @@ shibsptest_CPPFLAGS = \
shibsptest_CXXFLAGS = \
$(AM_CXXFLAGS)
+noinst_HEADERS = \
+ DummyRequest.h
+
shibsptest_SOURCES = \
AgentTestSuite.cpp \
AgentConfigTests.cpp \
diff --git a/tests/impl/XMLAccessControlTests.cpp b/tests/impl/XMLAccessControlTests.cpp
index 9631e49e..11da2228 100644
--- a/tests/impl/XMLAccessControlTests.cpp
+++ b/tests/impl/XMLAccessControlTests.cpp
@@ -27,6 +27,8 @@
#include "session/SessionCache.h"
#include "util/BoostPropertySet.h"
+#include "DummyRequest.h"
+
#ifdef HAVE_CXX14
# include <shared_mutex>
#endif
@@ -42,9 +44,6 @@ using namespace std;
namespace {
-struct DummyRequestMap : public BoostPropertySet {
-};
-
/** Open structure for testing manipulation. */
struct DummySession : public Session, public NoOpBasicLockable {
public:
@@ -74,34 +73,13 @@ public:
map<string,DDF> m_attributes;
};
-class DummyRequest : public AbstractSPRequest {
+class MappableDummyRequest : public DummyRequest {
public:
- DummyRequest() : AbstractSPRequest(SHIBSP_LOGCAT ".DummyRequest") {}
- ~DummyRequest() {}
+ MappableDummyRequest() {}
+ ~MappableDummyRequest() {}
RequestMapper::Settings getRequestSettings() const { return make_pair(&m_map, nullptr); }
- const char* getMethod() const { return nullptr; }
- const char* getScheme() const { return nullptr; }
- const char* getHostname() const { return nullptr; }
- int getPort() const { return 0; }
- string getContentType() const { return ""; }
- long getContentLength() const { return -1; }
- const char* getQueryString() const { return nullptr; }
- const char* getRequestBody() const { return nullptr; }
- string getHeader(const char*) const { return nullptr; }
- string getRemoteUser() const { return m_user; }
- string getAuthType() const { return nullptr; }
- long sendResponse(istream&, long status) { return status; }
- void clearHeader(const char* name) {}
- void setHeader(const char*, const char*) {}
- void setRemoteUser(const char*) {}
- long returnDecline() { return 200; }
- long returnOK() { return 200; }
-
- bool isUseHeaders() const { return true; }
- bool isUseVariables() const { return false; }
-
- string m_user;
- DummyRequestMap m_map;
+
+ BoostPropertySet m_map;
};
class exceptionCheck {
@@ -207,7 +185,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_inline_ValidUserRule, XMLAccessControlF
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
BOOST_CHECK_EQUAL(acl->authorized(request, nullptr), AccessControl::shib_acl_false);
@@ -230,7 +208,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_inline_UserRule, XMLAccessControlFixtur
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
request.m_user = "smith";
@@ -256,7 +234,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_inline_UserRegexRule, XMLAccessControlF
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
request.m_user = "smith";
@@ -282,7 +260,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_inline_ACRule, XMLAccessControlFixture)
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
DDF ac("Shib-AuthnContext-Class");
@@ -312,7 +290,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_inline_AttrRule, XMLAccessControlFixtur
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
DDF affiliation("affiliation");
@@ -344,7 +322,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_external_OR, XMLAccessControlFixture)
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
request.m_user = "jdoe";
@@ -377,7 +355,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_external_AND, XMLAccessControlFixture)
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
request.m_user = "jdoe";
@@ -407,7 +385,7 @@ BOOST_FIXTURE_TEST_CASE(XMLAccessControl_external_NOT, XMLAccessControlFixture)
shared_lock locker(*acl);
#endif
- DummyRequest request;
+ MappableDummyRequest request;
DummySession session;
DDF affiliation("affiliation");
diff --git a/tests/impl/XMLRequestMapperTests.cpp b/tests/impl/XMLRequestMapperTests.cpp
index d5ecd584..f0b19d25 100644
--- a/tests/impl/XMLRequestMapperTests.cpp
+++ b/tests/impl/XMLRequestMapperTests.cpp
@@ -28,6 +28,8 @@
#include "session/SessionCache.h"
#include "util/PropertySet.h"
+#include "DummyRequest.h"
+
#ifdef HAVE_CXX14
# include <shared_mutex>
#endif
@@ -73,39 +75,6 @@ public:
map<string,DDF> m_attributes;
};
-class DummyRequest : public AbstractSPRequest {
-public:
- DummyRequest(const char* uri=nullptr) : AbstractSPRequest(SHIBSP_LOGCAT ".DummyRequest") {
- setRequestURI(uri);
- }
- const char* getMethod() const { return nullptr; }
- const char* getScheme() const { return m_scheme.c_str(); }
- const char* getHostname() const { return m_hostname.c_str(); }
- int getPort() const { return m_port; }
- string getContentType() const { return ""; }
- long getContentLength() const { return -1; }
- const char* getQueryString() const { return m_query.c_str(); }
- const char* getRequestBody() const { return nullptr; }
- string getHeader(const char*) const { return nullptr; }
- string getRemoteUser() const { return m_user.c_str(); }
- string getAuthType() const { return nullptr; }
- long sendResponse(istream&, long status) { return status; }
- void clearHeader(const char*) {}
- void setHeader(const char*, const char*) {}
- void setRemoteUser(const char*) {}
- long returnDecline() { return 200; }
- long returnOK() { return 200; }
-
- bool isUseHeaders() const {return true;}
- bool isUseVariables() const { return false; }
-
- string m_scheme;
- string m_hostname;
- int m_port;
- string m_query;
- string m_user;
-};
-
class exceptionCheck {
public:
exceptionCheck(const string& msg) : m_msg(msg) {}
diff --git a/tests/session/impl/MemorySessionCacheTests.cpp b/tests/session/impl/MemorySessionCacheTests.cpp
index 5a1fe558..a817320f 100644
--- a/tests/session/impl/MemorySessionCacheTests.cpp
+++ b/tests/session/impl/MemorySessionCacheTests.cpp
@@ -18,13 +18,14 @@
* Unit tests for in-memory SessionCache back-end.
*/
-#include "AbstractSPRequest.h"
#include "Agent.h"
#include "AgentConfig.h"
#include "exceptions.h"
#include "remoting/ddf.h"
#include "session/SessionCache.h"
+#include "DummyRequest.h"
+
#include <map>
#include <memory>
#include <string>
@@ -39,49 +40,6 @@ using namespace std;
namespace {
-class DummyRequest : public AbstractSPRequest {
-public:
- DummyRequest(const char* uri=nullptr) : AbstractSPRequest(SHIBSP_LOGCAT ".DummyRequest"), m_addr("192.168.0.1") {
- setRequestURI(uri);
- }
- const char* getMethod() const { return nullptr; }
- const char* getScheme() const { return m_scheme.c_str(); }
- const char* getHostname() const { return m_hostname.c_str(); }
- int getPort() const { return m_port; }
- string getContentType() const { return ""; }
- long getContentLength() const { return -1; }
- const char* getQueryString() const { return m_query.c_str(); }
- const char* getRequestBody() const { return nullptr; }
- string getHeader(const char* name) const {
- return m_requestHeaders.find(name) == m_requestHeaders.end() ? "" : m_requestHeaders.find(name)->second;
- }
- string getRemoteUser() const { return m_user.c_str(); }
- string getRemoteAddr() const { return m_addr.c_str(); }
- string getAuthType() const { return nullptr; }
- long sendResponse(istream&, long status) { return status; }
- void clearHeader(const char* name) {}
- void setHeader(const char* name, const char* value) {}
- void setResponseHeader(const char* name, const char* value, bool replace=false) {
- HTTPResponse::setResponseHeader(name, value, replace);
- m_responseHeaders[name] = value ? value : "";
- }
- void setRemoteUser(const char*) {}
- long returnDecline() { return 200; }
- long returnOK() { return 200; }
-
- bool isUseHeaders() const {return true;}
- bool isUseVariables() const { return false; }
-
- string m_scheme;
- string m_hostname;
- int m_port;
- string m_query;
- string m_user;
- string m_addr;
- map<string,string> m_requestHeaders;
- map<string,string> m_responseHeaders;
-};
-
struct MemoryFixture
{
MemoryFixture() : data_path(DATA_PATH) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list