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 символов.

secret_test.go 2.4KB

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