SpSecureClientTest.cxx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "SpSecureClient.h"
  2. #include "gmock/gmock.h"
  3. #include "gtest/gtest.h"
  4. using testing::_;
  5. using testing::A;
  6. using testing::An;
  7. using testing::AnyNumber;
  8. using testing::Const;
  9. using testing::DoDefault;
  10. using testing::Eq;
  11. using testing::Lt;
  12. using testing::MockFunction;
  13. using testing::Ref;
  14. using testing::Return;
  15. using testing::ReturnRef;
  16. using testing::TypedEq;
  17. class CMockServerSession : public CServerSessionBase
  18. {
  19. public:
  20. CMockServerSession(CEntityBase* pEntity):m_pEntity(pEntity) {}
  21. ~CMockServerSession() {}
  22. bool IsExclusive() override { return false; }
  23. bool IsSessionOverlap() override { return true; }
  24. private:
  25. CEntityBase* m_pEntity;
  26. };
  27. class entity_function_mock : public IEntityFunction
  28. {
  29. };
  30. class CMockEntity : public CEntityBase
  31. {
  32. public:
  33. MOCK_METHOD0(OnStarted, void());
  34. MOCK_METHOD2(OnPreStart, void(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext));
  35. MOCK_METHOD2(OnNewSession, CServerSessionBase* (const char* /*pszRemoteEntityName*/, const char* /*pszParam*/));
  36. MOCK_CONST_METHOD0(GetEntityName, const char* ());
  37. MOCK_METHOD0(IsService, bool());
  38. };
  39. class client_comm_func_mock : public IClientCommFunc
  40. {
  41. public:
  42. client_comm_func_mock() {}
  43. virtual ~client_comm_func_mock() {}
  44. MOCK_METHOD0(IsConnectionOK, bool());
  45. MOCK_METHOD0(IsSecureConnection, bool());
  46. MOCK_METHOD3(Connect, bool(const char* pServerAddr, int nPort, int nOption));
  47. MOCK_METHOD0(Close, void());
  48. MOCK_METHOD1(SendPackage, string(const CSmartPointer<IPackage>& pSendPkg));
  49. MOCK_METHOD1(ReceivePackage, CSmartPointer<IPackage>(int nWaitSecond));
  50. MOCK_METHOD1(CreateNewPackage, CSmartPointer<IPackage>(const char* pServiceCode));
  51. MOCK_METHOD1(CreateReplyPackage, CSmartPointer<IPackage>(const CSmartPointer<IPackage>& pRecvPkg));
  52. };
  53. /*
  54. * SpSecureClient 是用于Entity内连接分行服务使用的,继承该类并实现相关功能
  55. */
  56. class CMockSecureClient : public SpSecureClient
  57. {
  58. public:
  59. CMockSecureClient(CEntityBase* pEntityBase):SpSecureClient(pEntityBase){}
  60. MOCK_METHOD0(ConnectFromCentralSetting, bool());
  61. MOCK_METHOD0(IsConnectionOK, bool());
  62. MOCK_METHOD0(IsSecureConn, bool());
  63. MOCK_METHOD0(Close, void());
  64. MOCK_METHOD1(SendPackage, string(const CSmartPointer<IPackage>& pSendPkg));
  65. MOCK_METHOD1(ReceivePackage, CSmartPointer<IPackage>(int nWaitSecond));
  66. MOCK_METHOD1(CreateNewPackage, CSmartPointer<IPackage>(const char* pServiceCode));
  67. MOCK_METHOD1(CreateReplyPackage, CSmartPointer<IPackage>(const CSmartPointer<IPackage>& pRecvPkg));
  68. MOCK_METHOD3(OnErrorMsg, void(DWORD dwSysCode, DWORD dwUserCode, const CSimpleStringA& pErrMsg));
  69. MOCK_METHOD1(OnPkgAnswer, void(const CSmartPointer<IPackage>& pRecvPkg));
  70. MOCK_METHOD0(GetFunction, CSmartPointer<IClientCommFunc>());
  71. };
  72. TEST(SpSecureClientMockTest, SpSecureClientComm)
  73. {
  74. testing::DefaultValue<bool>::Set(true);
  75. CMockEntity* entity = new CMockEntity();
  76. ON_CALL(*entity, GetEntityName()).WillByDefault(Return("MockEntity"));
  77. //EXPECT_CALL(*entity, OnStarted()).Times(1);
  78. client_comm_func_mock* comm_func_mock = new client_comm_func_mock();
  79. CMockSecureClient* mock = new CMockSecureClient(entity);
  80. ON_CALL(*mock, GetFunction()).WillByDefault(testing::Return(comm_func_mock));
  81. EXPECT_CALL(*mock, GetFunction());
  82. EXPECT_TRUE(mock->GetFunction() == CSmartPointer<IClientCommFunc>(comm_func_mock));
  83. // mock->Connect("127.0.0.1", 8090, 1);
  84. mock->DecRefCount();
  85. delete comm_func_mock;
  86. delete entity;
  87. testing::DefaultValue<bool>::Clear();
  88. }