mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package message_gateway
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
appgw "github.com/Rain-kl/Wavelet/internal/apps/message_gateway"
|
|
"github.com/Rain-kl/Wavelet/internal/repository"
|
|
"github.com/Rain-kl/Wavelet/internal/testhelper"
|
|
)
|
|
|
|
func TestCreateChannel_TelegramRequiresToken(t *testing.T) {
|
|
_, _, cleanup := testhelper.SetupTestEnvironment(t)
|
|
defer cleanup()
|
|
_, err := createChannel(context.Background(), CreateChannelRequest{Name: "tg", Type: "telegram"})
|
|
if err == nil {
|
|
t.Fatal("createChannel() error = nil, want token required")
|
|
}
|
|
}
|
|
|
|
func TestCreateChannel_StoresCiphertextNotPlaintext(t *testing.T) {
|
|
_, _, cleanup := testhelper.SetupTestEnvironment(t)
|
|
defer cleanup()
|
|
const token = "secret-token-xyz"
|
|
dto, err := createChannel(context.Background(), CreateChannelRequest{
|
|
Name: "tg",
|
|
Type: "telegram",
|
|
BotToken: token,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("createChannel() error = %v", err)
|
|
}
|
|
if strings.Contains(dto.BotToken, token) {
|
|
t.Fatalf("createChannel() dto leaked plaintext token %q", dto.BotToken)
|
|
}
|
|
row, err := repository.GetMessageChannel(context.Background(), dto.ID)
|
|
if err != nil {
|
|
t.Fatalf("GetMessageChannel() error = %v", err)
|
|
}
|
|
if strings.Contains(row.Credentials, token) {
|
|
t.Fatalf("stored credentials contain plaintext token")
|
|
}
|
|
creds, err := appgw.DecryptCredentials(row.Credentials)
|
|
if err != nil {
|
|
t.Fatalf("DecryptCredentials() error = %v", err)
|
|
}
|
|
if creds["bot_token"] != token {
|
|
t.Fatalf("DecryptCredentials() bot_token = %q, want %q", creds["bot_token"], token)
|
|
}
|
|
}
|
|
|
|
func TestUpdateChannel_EmptySecretKeepsPrevious(t *testing.T) {
|
|
_, _, cleanup := testhelper.SetupTestEnvironment(t)
|
|
defer cleanup()
|
|
created, err := createChannel(context.Background(), CreateChannelRequest{
|
|
Name: "tg",
|
|
Type: "telegram",
|
|
BotToken: "old-token",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("createChannel() error = %v", err)
|
|
}
|
|
name := "renamed"
|
|
if _, err := updateChannel(context.Background(), created.ID, UpdateChannelRequest{Name: &name}); err != nil {
|
|
t.Fatalf("updateChannel() error = %v", err)
|
|
}
|
|
row, err := repository.GetMessageChannel(context.Background(), created.ID)
|
|
if err != nil {
|
|
t.Fatalf("GetMessageChannel() error = %v", err)
|
|
}
|
|
if row.Name != "renamed" {
|
|
t.Fatalf("updateChannel() name = %q, want renamed", row.Name)
|
|
}
|
|
creds, err := appgw.DecryptCredentials(row.Credentials)
|
|
if err != nil {
|
|
t.Fatalf("DecryptCredentials() error = %v", err)
|
|
}
|
|
if creds["bot_token"] != "old-token" {
|
|
t.Fatalf("updateChannel() bot_token = %q, want old-token", creds["bot_token"])
|
|
}
|
|
}
|