99#include " glean/client/swift/JsonServer.h"
1010#include < gmock/gmock.h>
1111#include < gtest/gtest.h>
12- #include < chrono>
1312#include < memory>
1413#include < sstream>
15- #include < thread>
1614#include " glean/client/swift/test/GlassAccessMock.h"
17-
18- using ::testing::Return;
15+ #include " glean/client/swift/test/ScubaLoggerMock.h"
1916
2017class JsonServerTest : public ::testing::Test {
2118 protected:
2219 void SetUp () override {
2320 // Create JsonServer and set mock GlassAccess
2421 server_ = std::make_unique<JsonServer>();
2522 mockGlassAccess_ = std::make_unique<GlassAccessMock>();
23+ mockScubaLogger_ =
24+ std::make_unique<facebook::glean::swift::ScubaLoggerMock>();
2625
2726 // Set up default expectations for the mock
2827 protocol::LocationList defaultLocations;
@@ -36,12 +35,16 @@ class JsonServerTest : public ::testing::Test {
3635 *mockGlassAccess_,
3736 usrToDefinition (
3837 " s:12IGFriendsMap0aB4ViewC03mapC0So05MKMapC0CvgAFyXEfU_ADL_AFvp" ))
39- .WillByDefault (Return (defaultLocations));
38+ .WillByDefault (testing:: Return (defaultLocations));
4039
4140 ON_CALL (*mockGlassAccess_, usrToDefinition (" unknown_usr" ))
42- .WillByDefault (Return (std::nullopt ));
41+ .WillByDefault (testing::Return (std::nullopt ));
42+
43+ // Store raw pointer before moving to server
44+ mockScubaLoggerPtr_ = mockScubaLogger_.get ();
4345
4446 server_->setGlassAccess (std::move (mockGlassAccess_));
47+ server_->setScubaLogger (std::move (mockScubaLogger_));
4548 }
4649
4750 void TearDown () override {
@@ -53,6 +56,8 @@ class JsonServerTest : public ::testing::Test {
5356
5457 std::unique_ptr<JsonServer> server_;
5558 std::unique_ptr<GlassAccessMock> mockGlassAccess_;
59+ std::unique_ptr<facebook::glean::swift::ScubaLoggerMock> mockScubaLogger_;
60+ facebook::glean::swift::ScubaLoggerMock* mockScubaLoggerPtr_{};
5661};
5762
5863TEST_F (JsonServerTest, USRToDefinitionRequest) {
@@ -76,6 +81,15 @@ TEST_F(JsonServerTest, USRToDefinitionRequest) {
7681 EXPECT_TRUE (result.find (" \" line\" :25" ) != std::string::npos);
7782 EXPECT_TRUE (result.find (" \" character\" :4" ) != std::string::npos);
7883 EXPECT_TRUE (result.find (" \" character\" :30" ) != std::string::npos);
84+
85+ // Verify ScubaLogger was called with correct parameters
86+ mockScubaLoggerPtr_->expectLogRequest (
87+ " usrToDefinition" ,
88+ " s:12IGFriendsMap0aB4ViewC03mapC0So05MKMapC0CvgAFyXEfU_ADL_AFvp" ,
89+ facebook::glean::swift::USRType::SWIFT ,
90+ facebook::glean::swift::Status::SUCCESS ,
91+ " " ,
92+ " production" );
7993}
8094
8195TEST_F (JsonServerTest, USRToDefinitionRequestNoResults) {
@@ -93,6 +107,15 @@ TEST_F(JsonServerTest, USRToDefinitionRequestNoResults) {
93107 // Verify the response contains expected JSON structure with empty result
94108 EXPECT_TRUE (result.find (" \" id\" :2" ) != std::string::npos);
95109 EXPECT_TRUE (result.find (" \" result\" :[]" ) != std::string::npos);
110+
111+ // Verify ScubaLogger was called with correct parameters
112+ mockScubaLoggerPtr_->expectLogRequest (
113+ " clangUSRToDefinition" ,
114+ " unknown_usr" ,
115+ facebook::glean::swift::USRType::UNKNOWN ,
116+ facebook::glean::swift::Status::NOT_FOUND ,
117+ " " ,
118+ " production" );
96119}
97120
98121TEST_F (JsonServerTest, UnknownMethodRequest) {
@@ -113,6 +136,15 @@ TEST_F(JsonServerTest, UnknownMethodRequest) {
113136 EXPECT_TRUE (result.find (" \" code\" :-32601" ) != std::string::npos);
114137 EXPECT_TRUE (
115138 result.find (" \" message\" :\" Method not found\" " ) != std::string::npos);
139+
140+ // Verify ScubaLogger was called with correct parameters
141+ mockScubaLoggerPtr_->expectLogRequest (
142+ " UnknownMethod" ,
143+ " test" ,
144+ facebook::glean::swift::USRType::UNKNOWN ,
145+ facebook::glean::swift::Status::FAILED ,
146+ " Method not found" ,
147+ " production" );
116148}
117149
118150TEST_F (JsonServerTest, InvalidJSONRequest) {
@@ -130,4 +162,16 @@ TEST_F(JsonServerTest, InvalidJSONRequest) {
130162 EXPECT_TRUE (result.find (" \" error\" " ) != std::string::npos);
131163 EXPECT_TRUE (result.find (" \" code\" :-32700" ) != std::string::npos);
132164 EXPECT_TRUE (result.find (" \" message\" :\" Parse error:" ) != std::string::npos);
165+
166+ // Verify ScubaLogger was called with correct parameters
167+ EXPECT_EQ (1 , mockScubaLoggerPtr_->logRequestCallCount );
168+ EXPECT_EQ (" unknown" , mockScubaLoggerPtr_->lastMethod );
169+ EXPECT_EQ (" " , mockScubaLoggerPtr_->lastUsr );
170+ EXPECT_EQ (
171+ facebook::glean::swift::USRType::UNKNOWN ,
172+ mockScubaLoggerPtr_->lastUsrType );
173+ EXPECT_EQ (
174+ facebook::glean::swift::Status::FAILED , mockScubaLoggerPtr_->lastStatus );
175+ EXPECT_TRUE (mockScubaLoggerPtr_->lastError .find (" Parse error:" ) == 0 );
176+ EXPECT_EQ (" production" , mockScubaLoggerPtr_->lastMode );
133177}
0 commit comments