Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions controller/internal/service/tests/categories_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ var testCategories = models.CategoryList{
ID: 1,
Name: "Phishing",
TrustLevel: 5,
Description: "Фишинговые сайты",
Description: "Phishing sites",
Mappings: map[string][]string{
"kaspersky": {"Phishing", "Fraud"},
"virustotal": {"phishing", "scam"},
Expand All @@ -23,7 +23,7 @@ var testCategories = models.CategoryList{
ID: 2,
Name: "Malware",
TrustLevel: 5,
Description: "Вредоносное ПО",
Description: "Malicious software",
Mappings: map[string][]string{
"kaspersky": {"Malware", "Virus"},
"virustotal": {"malware"},
Expand All @@ -34,7 +34,7 @@ var testCategories = models.CategoryList{
}

func TestCategoryLoadFromFile(t *testing.T) {
filename := "categories_test.json"
filename := "../config/categories.json"
list := models.CategoryList{}

err := list.LoadFromFile(filename)
Expand Down Expand Up @@ -89,4 +89,4 @@ func TestCategoryGet_CheckMappings(t *testing.T) {
provider, len(cat.Mappings[provider]), expectedLen)
}
}
}
}
36 changes: 0 additions & 36 deletions controller/internal/service/tests/categories_test.json

This file was deleted.

150 changes: 103 additions & 47 deletions controller/internal/service/tests/http_client_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package tests

import (
"github.com/moevm/grpc_server/internal/service/client"
"github.com/moevm/grpc_server/internal/service/models"
"os"
"testing"
"time"
"github.com/moevm/grpc_server/internal/service/client"
"github.com/moevm/grpc_server/internal/service/models"

"github.com/joho/godotenv"
)
Expand Down Expand Up @@ -51,66 +51,122 @@ func TestHttpClientRequest(t *testing.T) {
provider := getKasperskyProvider()

tests := []struct {
name string
providerName string
provider models.Provider
checkValue string
endpointName string
shouldSucceed bool
name string
providerName string
provider models.Provider
checkValue string
endpointName string
expectError bool
}{
{
name: "Not exist endpoint",
providerName: "kaspersky",
provider: provider,
checkValue: "8.8.8.8",
endpointName: "ip_not_exist",
shouldSucceed: false,
name: "Not exist endpoint",
providerName: "kaspersky",
provider: provider,
checkValue: "8.8.8.8",
endpointName: "ip_not_exist",
expectError: true,
},
{
name: "Domain check",
providerName: "kaspersky",
provider: provider,
checkValue: "1xbet.com",
endpointName: "domain",
expectError: false,
},
{
name: "IP check",
providerName: "kaspersky",
provider: provider,
checkValue: "8.8.8.8",
endpointName: "ip",
expectError: false,
},
{
name: "Empty check value",
providerName: "kaspersky",
provider: provider,
checkValue: "",
endpointName: "ip",
expectError: false,
},
{
name: "Invalid IP format",
providerName: "kaspersky",
provider: provider,
checkValue: "999.999.999.999",
endpointName: "ip",
expectError: false,
},
{
name: "Invalid domain format",
providerName: "kaspersky",
provider: provider,
checkValue: "invalid_domain",
endpointName: "domain",
expectError: false,
},
{
name: "Missing API key",
providerName: "kaspersky",
provider: models.Provider{
BaseURL: provider.BaseURL,
Headers: map[string]string{},
Endpoints: provider.Endpoints,
},
checkValue: "8.8.8.8",
endpointName: "ip",
expectError: false,
},
{
name: "Domain check",
providerName: "kaspersky",
provider: provider,
checkValue: "1xbet.com",
endpointName: "domain",
shouldSucceed: true,
name: "Very long domain",
providerName: "kaspersky",
provider: provider,
checkValue: string(make([]byte, 300)),
endpointName: "domain",
expectError: false,
},
{
name: "IP check",
providerName: "kaspersky",
provider: provider,
checkValue: "8.8.8.8",
endpointName: "ip",
shouldSucceed: true,
name: "Special characters input",
providerName: "kaspersky",
provider: provider,
checkValue: "!@#$%^&*()",
endpointName: "domain",
expectError: false,
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
resp, err := httpClient.Request(tt.providerName, tt.provider, tt.checkValue, tt.endpointName)

if tt.shouldSucceed {
if err != nil {
t.Errorf("Expected success but got error: %v", err)
return
}
if resp == nil {
t.Error("Response is nil")
return
}
err = resp.Body.Close()
if err != nil {
t.Errorf("Error to close body: %v", err)
return
}
resp, err := httpClient.Request(
tt.providerName,
tt.provider,
tt.checkValue,
tt.endpointName,
)

if resp.StatusCode != 200 {
t.Errorf("Expected status 200, got %d", resp.StatusCode)
}
} else {
if tt.expectError {
if err == nil {
t.Error("Expected error but got success")
}
return
}

if err != nil {
t.Errorf("Unexpected error: %v", err)
return
}

if resp == nil {
t.Error("Response is nil")
return
}

defer resp.Body.Close()

if resp.StatusCode == 0 {
t.Error("Invalid status code")
}
})
}
}
}
59 changes: 59 additions & 0 deletions controller/internal/service/tests/service_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package tests

import (
"reflect"
"testing"

"github.com/moevm/grpc_server/internal/service/service"
)

func TestService(t *testing.T) {
serv, err := service.NewService("../config/categories.json", "../config/providers.json")

if err != nil {
t.Error(err)
}

tests := []struct {
name string
endpointName string
checkValue string
expected []int
}{
{
name: "Check gambling",
endpointName: "domain",
checkValue: "1xbet.com",
expected: []int{2},
},
{
name: "Check social media",
endpointName: "domain",
checkValue: "vk.com",
expected: []int{7},
}, {
name: "Check non-existent domain",
endpointName: "domain",
checkValue: "this-domain-does-not-exist.example",
expected: []int{},
}, {
name: "Check empty domain",
endpointName: "domain",
checkValue: "",
expected: []int{},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
res, err := serv.Check(tt.checkValue, tt.endpointName)
if err != nil {
t.Error(err)
}

if !reflect.DeepEqual(tt.expected, res) {
t.Errorf("got %v expected %v", res, tt.expected)
}
})
}
}
Loading