Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package mtglib_test
  2. import (
  3. "encoding/hex"
  4. "encoding/json"
  5. "testing"
  6. "github.com/9seconds/mtg/v2/mtglib"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/suite"
  9. )
  10. type SecretTestSuite struct {
  11. suite.Suite
  12. }
  13. func (suite *SecretTestSuite) TestParseSecret() {
  14. secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
  15. s := mtglib.Secret{
  16. Host: "google.com",
  17. }
  18. copy(s.Key[:], secretData)
  19. testData := map[string]string{
  20. "hex": "eed11c6cbbd9efe7fed5bc0db220b09665676f6f676c652e636f6d",
  21. "base64": "7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t",
  22. }
  23. for name, value := range testData {
  24. param := value
  25. suite.T().Run(name, func(t *testing.T) {
  26. parsed, err := mtglib.ParseSecret(param)
  27. assert.NoError(t, err)
  28. assert.Equal(t, s.Key, parsed.Key)
  29. assert.Equal(t, s.Host, parsed.Host)
  30. newSecret := mtglib.Secret{}
  31. assert.NoError(t, newSecret.UnmarshalText([]byte(param)))
  32. assert.Equal(t, s.Key, newSecret.Key)
  33. assert.Equal(t, s.Host, newSecret.Host)
  34. })
  35. }
  36. }
  37. func (suite *SecretTestSuite) TestSerialize() {
  38. secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
  39. s := mtglib.Secret{
  40. Host: "google.com",
  41. }
  42. copy(s.Key[:], secretData)
  43. suite.Equal("eed11c6cbbd9efe7fed5bc0db220b09665676f6f676c652e636f6d", s.Hex())
  44. suite.Equal("7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t", s.Base64())
  45. }
  46. func (suite *SecretTestSuite) TestMarshalData() {
  47. secretData, _ := hex.DecodeString("d11c6cbbd9efe7fed5bc0db220b09665")
  48. s := mtglib.Secret{
  49. Host: "google.com",
  50. }
  51. copy(s.Key[:], secretData)
  52. data, err := json.Marshal(&s)
  53. suite.NoError(err)
  54. suite.Equal(string(data), `"7tEcbLvZ7-f-1bwNsiCwlmVnb29nbGUuY29t"`)
  55. }
  56. func (suite *SecretTestSuite) TestIncorrectSecret() {
  57. testData := []string{
  58. "aaa",
  59. "d11c6cbbd9efe7fed5bc0db220b09665",
  60. "ddd11c6cbbd9efe7fed5bc0db220b09665",
  61. "+ueJ0q91t5XOnFYP8Xac3A",
  62. "eed11c6cbbd9efe7fed5bc0db220b09665",
  63. "ed11c6cbbd9efe7fed5bc0db220b09665",
  64. }
  65. for _, v := range testData {
  66. param := v
  67. suite.T().Run(param, func(t *testing.T) {
  68. _, err := mtglib.ParseSecret(param)
  69. assert.Error(t, err)
  70. })
  71. }
  72. }
  73. func (suite *SecretTestSuite) TestInvariant() {
  74. generated := mtglib.GenerateSecret("google.com")
  75. parsed, err := mtglib.ParseSecret(generated.Hex())
  76. suite.NoError(err)
  77. suite.Equal(generated.Key, parsed.Key)
  78. suite.Equal(generated.Host, parsed.Host)
  79. suite.Equal("google.com", parsed.Host)
  80. }
  81. func (suite *SecretTestSuite) TestValid() {
  82. s := mtglib.Secret{}
  83. suite.False(s.Valid())
  84. s.Key[0] = 1
  85. suite.False(s.Valid())
  86. s.Host = "11"
  87. suite.True(s.Valid())
  88. }
  89. func TestSecret(t *testing.T) {
  90. t.Parallel()
  91. suite.Run(t, &SecretTestSuite{})
  92. }