| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/mock_sspi_library_win.h" | 5 #include "net/http/mock_sspi_library_win.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 namespace net { | 9 namespace net { |
| 10 | 10 |
| 11 MockSSPILibrary::MockSSPILibrary() { | 11 MockSSPILibrary::MockSSPILibrary() { |
| 12 } | 12 } |
| 13 | 13 |
| 14 MockSSPILibrary::~MockSSPILibrary() { | 14 MockSSPILibrary::~MockSSPILibrary() { |
| 15 EXPECT_TRUE(expected_package_queries_.empty()); | 15 EXPECT_TRUE(expected_package_queries_.empty()); |
| 16 EXPECT_TRUE(expected_freed_packages_.empty()); | 16 EXPECT_TRUE(expected_freed_packages_.empty()); |
| 17 } | 17 } |
| 18 | 18 |
| 19 SECURITY_STATUS MockSSPILibrary::AcquireCredentialsHandle( | 19 SECURITY_STATUS MockSSPILibrary::AcquireCredentialsHandle( |
| 20 LPWSTR pszPrincipal, | 20 LPWSTR pszPrincipal, |
| 21 LPWSTR pszPackage, | 21 LPWSTR pszPackage, |
| 22 unsigned long fCredentialUse, | 22 unsigned long fCredentialUse, |
| 23 void* pvLogonId, | 23 void* pvLogonId, |
| 24 void* pvAuthData, | 24 void* pvAuthData, |
| 25 SEC_GET_KEY_FN pGetKeyFn, | 25 SEC_GET_KEY_FN pGetKeyFn, |
| 26 void* pvGetKeyArgument, | 26 void* pvGetKeyArgument, |
| 27 PCredHandle phCredential, | 27 PCredHandle phCredential, |
| 28 PTimeStamp ptsExpiry) { | 28 PTimeStamp ptsExpiry) { |
| 29 // Fill in phCredential with arbitrary value. | 29 // Fill in phCredential with arbitrary value. |
| 30 phCredential->dwLower = phCredential->dwUpper = ((ULONG_PTR) ((INT_PTR)0)); | 30 phCredential->dwLower = phCredential->dwUpper = ((ULONG_PTR)((INT_PTR)0)); |
| 31 return SEC_E_OK; | 31 return SEC_E_OK; |
| 32 } | 32 } |
| 33 | 33 |
| 34 SECURITY_STATUS MockSSPILibrary::InitializeSecurityContext( | 34 SECURITY_STATUS MockSSPILibrary::InitializeSecurityContext( |
| 35 PCredHandle phCredential, | 35 PCredHandle phCredential, |
| 36 PCtxtHandle phContext, | 36 PCtxtHandle phContext, |
| 37 SEC_WCHAR* pszTargetName, | 37 SEC_WCHAR* pszTargetName, |
| 38 unsigned long fContextReq, | 38 unsigned long fContextReq, |
| 39 unsigned long Reserved1, | 39 unsigned long Reserved1, |
| 40 unsigned long TargetDataRep, | 40 unsigned long TargetDataRep, |
| 41 PSecBufferDesc pInput, | 41 PSecBufferDesc pInput, |
| 42 unsigned long Reserved2, | 42 unsigned long Reserved2, |
| 43 PCtxtHandle phNewContext, | 43 PCtxtHandle phNewContext, |
| 44 PSecBufferDesc pOutput, | 44 PSecBufferDesc pOutput, |
| 45 unsigned long* contextAttr, | 45 unsigned long* contextAttr, |
| 46 PTimeStamp ptsExpiry) { | 46 PTimeStamp ptsExpiry) { |
| 47 // Fill in the outbound buffer with garbage data. | 47 // Fill in the outbound buffer with garbage data. |
| 48 PSecBuffer out_buffer = pOutput->pBuffers; | 48 PSecBuffer out_buffer = pOutput->pBuffers; |
| 49 out_buffer->cbBuffer = 2; | 49 out_buffer->cbBuffer = 2; |
| 50 uint8* buf = reinterpret_cast<uint8 *>(out_buffer->pvBuffer); | 50 uint8* buf = reinterpret_cast<uint8*>(out_buffer->pvBuffer); |
| 51 buf[0] = 0xAB; | 51 buf[0] = 0xAB; |
| 52 buf[1] = 0xBA; | 52 buf[1] = 0xBA; |
| 53 | 53 |
| 54 // Fill in phNewContext with arbitrary value if it's invalid. | 54 // Fill in phNewContext with arbitrary value if it's invalid. |
| 55 if (phNewContext != phContext) | 55 if (phNewContext != phContext) |
| 56 phNewContext->dwLower = phNewContext->dwUpper = ((ULONG_PTR) ((INT_PTR)0)); | 56 phNewContext->dwLower = phNewContext->dwUpper = ((ULONG_PTR)((INT_PTR)0)); |
| 57 return SEC_E_OK; | 57 return SEC_E_OK; |
| 58 } | 58 } |
| 59 | 59 |
| 60 SECURITY_STATUS MockSSPILibrary::QuerySecurityPackageInfo( | 60 SECURITY_STATUS MockSSPILibrary::QuerySecurityPackageInfo( |
| 61 LPWSTR pszPackageName, PSecPkgInfoW *pkgInfo) { | 61 LPWSTR pszPackageName, |
| 62 PSecPkgInfoW* pkgInfo) { |
| 62 EXPECT_TRUE(!expected_package_queries_.empty()); | 63 EXPECT_TRUE(!expected_package_queries_.empty()); |
| 63 PackageQuery package_query = expected_package_queries_.front(); | 64 PackageQuery package_query = expected_package_queries_.front(); |
| 64 expected_package_queries_.pop_front(); | 65 expected_package_queries_.pop_front(); |
| 65 std::wstring actual_package(pszPackageName); | 66 std::wstring actual_package(pszPackageName); |
| 66 EXPECT_EQ(package_query.expected_package, actual_package); | 67 EXPECT_EQ(package_query.expected_package, actual_package); |
| 67 *pkgInfo = package_query.package_info; | 68 *pkgInfo = package_query.package_info; |
| 68 if (package_query.response_code == SEC_E_OK) | 69 if (package_query.response_code == SEC_E_OK) |
| 69 expected_freed_packages_.insert(package_query.package_info); | 70 expected_freed_packages_.insert(package_query.package_info); |
| 70 return package_query.response_code; | 71 return package_query.response_code; |
| 71 } | 72 } |
| 72 | 73 |
| 73 SECURITY_STATUS MockSSPILibrary::FreeCredentialsHandle( | 74 SECURITY_STATUS MockSSPILibrary::FreeCredentialsHandle( |
| 74 PCredHandle phCredential) { | 75 PCredHandle phCredential) { |
| 75 EXPECT_TRUE(phCredential->dwLower == ((ULONG_PTR) ((INT_PTR) 0))); | 76 EXPECT_TRUE(phCredential->dwLower == ((ULONG_PTR)((INT_PTR)0))); |
| 76 EXPECT_TRUE(phCredential->dwLower == ((ULONG_PTR) ((INT_PTR) 0))); | 77 EXPECT_TRUE(phCredential->dwLower == ((ULONG_PTR)((INT_PTR)0))); |
| 77 SecInvalidateHandle(phCredential); | 78 SecInvalidateHandle(phCredential); |
| 78 return SEC_E_OK; | 79 return SEC_E_OK; |
| 79 } | 80 } |
| 80 | 81 |
| 81 SECURITY_STATUS MockSSPILibrary::DeleteSecurityContext(PCtxtHandle phContext) { | 82 SECURITY_STATUS MockSSPILibrary::DeleteSecurityContext(PCtxtHandle phContext) { |
| 82 EXPECT_TRUE(phContext->dwLower == ((ULONG_PTR) ((INT_PTR) 0))); | 83 EXPECT_TRUE(phContext->dwLower == ((ULONG_PTR)((INT_PTR)0))); |
| 83 EXPECT_TRUE(phContext->dwLower == ((ULONG_PTR) ((INT_PTR) 0))); | 84 EXPECT_TRUE(phContext->dwLower == ((ULONG_PTR)((INT_PTR)0))); |
| 84 SecInvalidateHandle(phContext); | 85 SecInvalidateHandle(phContext); |
| 85 return SEC_E_OK; | 86 return SEC_E_OK; |
| 86 } | 87 } |
| 87 | 88 |
| 88 SECURITY_STATUS MockSSPILibrary::FreeContextBuffer(PVOID pvContextBuffer) { | 89 SECURITY_STATUS MockSSPILibrary::FreeContextBuffer(PVOID pvContextBuffer) { |
| 89 PSecPkgInfoW package_info = static_cast<PSecPkgInfoW>(pvContextBuffer); | 90 PSecPkgInfoW package_info = static_cast<PSecPkgInfoW>(pvContextBuffer); |
| 90 std::set<PSecPkgInfoW>::iterator it = expected_freed_packages_.find( | 91 std::set<PSecPkgInfoW>::iterator it = |
| 91 package_info); | 92 expected_freed_packages_.find(package_info); |
| 92 EXPECT_TRUE(it != expected_freed_packages_.end()); | 93 EXPECT_TRUE(it != expected_freed_packages_.end()); |
| 93 expected_freed_packages_.erase(it); | 94 expected_freed_packages_.erase(it); |
| 94 return SEC_E_OK; | 95 return SEC_E_OK; |
| 95 } | 96 } |
| 96 | 97 |
| 97 void MockSSPILibrary::ExpectQuerySecurityPackageInfo( | 98 void MockSSPILibrary::ExpectQuerySecurityPackageInfo( |
| 98 const std::wstring& expected_package, | 99 const std::wstring& expected_package, |
| 99 SECURITY_STATUS response_code, | 100 SECURITY_STATUS response_code, |
| 100 PSecPkgInfoW package_info) { | 101 PSecPkgInfoW package_info) { |
| 101 PackageQuery package_query = {expected_package, response_code, | 102 PackageQuery package_query = {expected_package, response_code, package_info}; |
| 102 package_info}; | |
| 103 expected_package_queries_.push_back(package_query); | 103 expected_package_queries_.push_back(package_query); |
| 104 } | 104 } |
| 105 | 105 |
| 106 } // namespace net | 106 } // namespace net |
| OLD | NEW |