generated from Yandex-Practicum/go-musthave-metrics-tpl
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
886 additions
and
272 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
package entities | ||
|
||
import ( | ||
"os" | ||
"testing" | ||
) | ||
|
||
func TestFilePathSet_ValidPath(t *testing.T) { | ||
tempFile, err := os.CreateTemp("", "testfile") | ||
if err != nil { | ||
t.Fatalf("failed to create temp file: %v", err) | ||
} | ||
defer func() { | ||
rErr := os.Remove(tempFile.Name()) | ||
if rErr != nil { | ||
t.Error(rErr) | ||
} | ||
}() | ||
|
||
var fp FilePath | ||
if err := fp.Set(tempFile.Name()); err != nil { | ||
t.Errorf("expected Set to succeed, got error: %v", err) | ||
} | ||
|
||
if fp.String() != tempFile.Name() { | ||
t.Errorf("expected FilePath to be %s, got %s", tempFile.Name(), fp.String()) | ||
} | ||
} | ||
|
||
func TestFilePathSet_InvalidPath(t *testing.T) { | ||
var fp FilePath | ||
invalidPath := "/nonexistent/path/to/file" | ||
|
||
err := fp.Set(invalidPath) | ||
if err == nil { | ||
t.Errorf("expected error for invalid path, got nil") | ||
} | ||
|
||
expectedErrMsg := "invalid file path" | ||
if err != nil && err.Error()[:len(expectedErrMsg)] != expectedErrMsg { | ||
t.Errorf("expected error message to start with %q, got %q", expectedErrMsg, err.Error()) | ||
} | ||
} | ||
|
||
func TestFilePathString(t *testing.T) { | ||
fp := FilePath("/path/to/file") | ||
|
||
if fp.String() != "/path/to/file" { | ||
t.Errorf("expected String to return '/path/to/file', got %s", fp.String()) | ||
} | ||
} | ||
|
||
func TestFilePathType(t *testing.T) { | ||
fp := FilePath("/path/to/file") | ||
|
||
if fp.Type() != "string" { | ||
t.Errorf("expected Type to return 'string', got %s", fp.Type()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package entities | ||
|
||
import ( | ||
"testing" | ||
) | ||
|
||
func TestSecretSet(t *testing.T) { | ||
var s Secret | ||
err := s.Set("mysecrettokenvalueforauthentication") | ||
|
||
if err != nil { | ||
t.Fatalf("expected no error, got %v", err) | ||
} | ||
|
||
if s != "mysecrettokenvalueforauthentication" { | ||
t.Errorf("expected Secret to be set to 'mysecrettokenvalueforauthentication', got %s", s) | ||
} | ||
} | ||
|
||
func TestSecretSet_WarnOnShortSecret(t *testing.T) { | ||
var s Secret | ||
err := s.Set("short") | ||
|
||
if err != nil { | ||
t.Fatalf("expected no error, got %v", err) | ||
} | ||
|
||
if s != "short" { | ||
t.Errorf("expected Secret to be set to 'short', got %s", s) | ||
} | ||
} | ||
|
||
func TestSecretType(t *testing.T) { | ||
var s Secret | ||
if s.Type() != "string" { | ||
t.Errorf("expected Type to return 'string', got %s", s.Type()) | ||
} | ||
} | ||
|
||
func TestSecretString_Masking(t *testing.T) { | ||
tests := []struct { | ||
input string | ||
expected string | ||
}{ | ||
{"supersecretpassword", "s*****************d"}, | ||
{"short", "s***t"}, | ||
{"ab", "ab"}, | ||
{"a", "a"}, | ||
{"", ""}, | ||
} | ||
|
||
for _, tt := range tests { | ||
var s Secret | ||
err := s.Set(tt.input) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
result := s.String() | ||
|
||
if result != tt.expected { | ||
t.Errorf("expected masked output to be '%s', got '%s' for input '%s'", tt.expected, result, tt.input) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
package httpserver | ||
|
||
import ( | ||
"context" | ||
"errors" | ||
"net/http" | ||
"testing" | ||
"time" | ||
|
||
"github.com/ex0rcist/metflix/internal/entities" | ||
) | ||
|
||
func TestNew(t *testing.T) { | ||
handler := http.NewServeMux() | ||
address := entities.Address("127.0.0.1:8080") | ||
|
||
server := New(handler, address) | ||
|
||
if server.server.Addr != address.String() { | ||
t.Errorf("expected server address %s, got %s", address.String(), server.server.Addr) | ||
} | ||
|
||
if server.server.Handler != handler { | ||
t.Errorf("expected server handler to be %v, got %v", handler, server.server.Handler) | ||
} | ||
|
||
if server.notify == nil { | ||
t.Error("expected notify channel to be initialized") | ||
} | ||
} | ||
|
||
func TestServerStart(t *testing.T) { | ||
handler := http.NewServeMux() | ||
handler.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) { | ||
w.WriteHeader(http.StatusOK) | ||
}) | ||
|
||
address := entities.Address("127.0.0.1:8080") | ||
server := New(handler, address) | ||
|
||
server.Start() | ||
|
||
time.Sleep(100 * time.Millisecond) | ||
|
||
actualAddr := server.server.Addr | ||
|
||
req, err := http.NewRequest(http.MethodGet, "http://"+actualAddr+"/test", nil) | ||
if err != nil { | ||
t.Fatalf("failed to create request: %v", err) | ||
} | ||
|
||
client := &http.Client{} | ||
resp, err := client.Do(req) | ||
if err != nil { | ||
t.Fatalf("failed to make request to server: %v", err) | ||
} | ||
defer func() { | ||
bcErr := resp.Body.Close() | ||
if bcErr != nil { | ||
t.Error(bcErr) | ||
} | ||
}() | ||
|
||
if resp.StatusCode != http.StatusOK { | ||
t.Errorf("expected status code 200, got %d", resp.StatusCode) | ||
} | ||
|
||
err = server.Shutdown(context.Background()) | ||
if err != nil { | ||
t.Fatalf("failed to shutdown server: %v", err) | ||
} | ||
|
||
select { | ||
case err, ok := <-server.Notify(): | ||
if ok { | ||
if !errors.Is(err, http.ErrServerClosed) { | ||
t.Errorf("expected error 'http: Server closed', got %v", err) | ||
} | ||
} | ||
case <-time.After(time.Second): | ||
t.Error("timeout: notify channel did not close after shutdown") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,39 @@ | ||
package logging_test | ||
package logging | ||
|
||
import ( | ||
"context" | ||
"errors" | ||
"testing" | ||
|
||
"github.com/ex0rcist/metflix/internal/logging" | ||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
func TestSetup(t *testing.T) { | ||
require := require.New(t) | ||
|
||
require.NotPanics(func() { logging.Setup() }) | ||
require.NotPanics(func() { Setup() }) | ||
} | ||
|
||
func TestBasic(t *testing.T) { | ||
require := require.New(t) | ||
|
||
Setup() | ||
|
||
require.NotPanics(func() { | ||
LogInfo("some message") | ||
LogInfoCtx(context.Background(), "some message") | ||
LogInfoF("some message %d", 42) | ||
|
||
LogWarn("some message") | ||
LogWarnCtx(context.Background(), "some message") | ||
LogWarnF("some message %d", 42) | ||
|
||
LogError(errors.New("some message")) | ||
LogErrorCtx(context.Background(), errors.New("some message")) | ||
LogErrorF("some message %d", errors.New("test")) | ||
|
||
LogDebug("some message") | ||
LogDebugCtx(context.Background(), "some message") | ||
LogDebugF("some message %d", 42) | ||
}) | ||
} |
Oops, something went wrong.