Files
HackBrowserData/item/item_test.go
T
ᴍᴏᴏɴD4ʀᴋ eed1d12282 dev: refactor items and update repo deploy (#278)
* refactor: Refactor file paths and use map to store item names

- Refactored file paths for various browsing data types to use a consistent method of generating temporary file names
- Modified parsing functions in many browsing data types to use the new temporary file naming scheme
- Renamed `FileName` to `Filename` for consistency in the `item` package
- Removed unnecessary code and comments throughout various files
- Made minor improvements to some Item methods such as `TempFilename` and `FileName`

* ci: Optimize GitHub actions and update Go versions. (#274)

* ci: Optimize GitHub actions and update Go versions.

- Add GitHub actions for unit testing, linting, building, and releasing
- Use a matrix strategy to test on different versions and platforms
- Update setup-go and go-version options for compatibility
- Format code and build zip files for different operating systems
- Upload releases to GitHub with specific asset names and types

* fix: Refactor item file naming convention

- Update `filename()` function to return `UnsupportedItem` in specific cases
- Replace `UnknownItem` with `UnsupportedItem` in `Filename` method of `Item` struct
- Refactor code for clarity and consistency

* ci: Update GitHub workflow with latest setup-go version

- Update setup-go action to v3 in lint.yml GitHub workflow
- Omits some big changes in file diff summary
- Improve overall workflow reliability and efficiency

* ci: Improve GitHub actions across platforms

- Improve Windows compatibility in build workflow
- Optimize unit testing for pull requests
- Upgrade Coveralls GitHub action to v2 for improved coverage tracking

* build: Optimize build process for consistency and efficiency

- Ensure consistency of line endings by disabling Git's automatic conversion
- Add format check for Windows systems
- Update Go version in strategy matrix to `1.21.x`
- Remove unused dependencies from build process
- Include all packages in repository in build command

* ci: Refactor GitHub workflow configuration

- Remove unnecessary checks for `windows-latest` in github workflow
- Change `gofmt` check to `diff` for formatting
- Remove unneeded Git configuration for encoding of line endings
- Close #273

* ci: Update default branch references in GitHub Actions workflows (#277)

- Update Github Actions workflows to use `main` branch instead of `master`.
- Rename `master` branch to `main` in `lint.yml` and `build.yml` files.
- Change default branch to `main` in `contributors.yml` workflow file.
2024-01-13 15:58:53 +08:00

130 lines
3.3 KiB
Go

package item
import (
"fmt"
"os"
"strconv"
"testing"
"github.com/stretchr/testify/assert"
)
func TestItem_FileName(t *testing.T) {
for _, item := range DefaultChromium {
assert.Equal(t, item.Filename(), item.filename())
}
for _, item := range DefaultFirefox {
assert.Equal(t, item.Filename(), item.filename())
}
for _, item := range DefaultYandex {
assert.Equal(t, item.Filename(), item.filename())
}
}
func TestItem_TempFilename(t *testing.T) {
asserts := assert.New(t)
testCases := []struct {
item Item
expected string
}{
{ChromiumKey, "Local State"},
{ChromiumPassword, "Login Data"},
{ChromiumLocalStorage, "Local Storage/leveldb"},
{FirefoxSessionStorage, "unsupported item"},
{FirefoxLocalStorage, "webappsstore.sqlite"},
{YandexPassword, "Ya Passman Data"},
{YandexCreditCard, "Ya Credit Cards"},
}
for _, tc := range testCases {
expectedPrefix := tc.expected + "_" + strconv.Itoa(int(tc.item)) + ".temp"
actualPath := tc.item.TempFilename()
asserts.Contains(actualPath, expectedPrefix, "TempFilename should contain the correct prefix for "+tc.expected)
asserts.Contains(actualPath, os.TempDir(), "TempFilename should be in the system temp directory for "+tc.expected)
}
}
func TestItem_IsSensitive(t *testing.T) {
asserts := assert.New(t)
testCases := []struct {
item Item
expected bool
}{
{ChromiumKey, true},
{ChromiumPassword, true},
{ChromiumBookmark, false},
}
for _, tc := range testCases {
asserts.Equal(tc.expected, tc.item.IsSensitive(), fmt.Sprintf("IsSensitive for %v should be %v", tc.item, tc.expected))
}
}
func TestFilterSensitiveItems(t *testing.T) {
asserts := assert.New(t)
testCases := []struct {
items []Item
expected int
}{
{[]Item{ChromiumKey, ChromiumBookmark, ChromiumPassword}, 2},
{[]Item{ChromiumBookmark, ChromiumHistory}, 0},
}
for _, tc := range testCases {
filteredItems := FilterSensitiveItems(tc.items)
asserts.Len(filteredItems, tc.expected, "FilterSensitiveItems should return the correct number of sensitive items")
for _, item := range filteredItems {
asserts.True(item.IsSensitive(), "Filtered items should be sensitive")
}
}
}
func (i Item) filename() string {
switch i {
case ChromiumKey:
return fileChromiumKey
case ChromiumPassword:
return fileChromiumPassword
case ChromiumCookie:
return fileChromiumCookie
case ChromiumBookmark:
return fileChromiumBookmark
case ChromiumDownload:
return fileChromiumDownload
case ChromiumLocalStorage:
return fileChromiumLocalStorage
case ChromiumSessionStorage:
return fileChromiumSessionStorage
case ChromiumCreditCard:
return fileChromiumCredit
case ChromiumExtension:
return fileChromiumExtension
case ChromiumHistory:
return fileChromiumHistory
case YandexPassword:
return fileYandexPassword
case YandexCreditCard:
return fileYandexCredit
case FirefoxKey4:
return fileFirefoxKey4
case FirefoxPassword:
return fileFirefoxPassword
case FirefoxCookie:
return fileFirefoxCookie
case FirefoxBookmark:
return fileFirefoxData
case FirefoxDownload:
return fileFirefoxData
case FirefoxLocalStorage:
return fileFirefoxLocalStorage
case FirefoxHistory:
return fileFirefoxData
case FirefoxExtension:
return fileFirefoxExtension
case FirefoxCreditCard:
return UnsupportedItem
default:
return UnsupportedItem
}
}