66 lines
2.3 KiB
Go
66 lines
2.3 KiB
Go
package rpc
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/iamxvbaba/td/clock"
|
|
"github.com/iamxvbaba/td/tg"
|
|
|
|
"telesrv/internal/updatecdn"
|
|
)
|
|
|
|
type fakeAppUpdateResolver struct {
|
|
request updatecdn.ResolveRequest
|
|
result *updatecdn.ResolvedUpdate
|
|
err error
|
|
}
|
|
|
|
func (f *fakeAppUpdateResolver) Resolve(_ context.Context, req updatecdn.ResolveRequest) (*updatecdn.ResolvedUpdate, error) {
|
|
f.request = req
|
|
return f.result, f.err
|
|
}
|
|
|
|
func TestHelpGetAppUpdateUsesClientPlatformVersionSourceAndLanguage(t *testing.T) {
|
|
resolver := &fakeAppUpdateResolver{result: &updatecdn.ResolvedUpdate{
|
|
ID: 91, Version: "12.9.1", Text: "Новая версия", URL: "https://updates.example/app.apk", CanNotSkip: true,
|
|
}}
|
|
router := New(Config{PublicBaseURL: "https://telesrv.example"}, Deps{AppUpdates: resolver}, zap.NewNop(), clock.System)
|
|
ctx := WithClientInfo(WithUserID(context.Background(), 1000000001), ClientInfo{
|
|
Type: ClientTypeAndroid, AppVersion: "12.9.0 (500)", LangCode: "ru", SystemLangCode: "en",
|
|
})
|
|
result, err := router.onHelpGetAppUpdate(ctx, "com.example.store")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
update, ok := result.(*tg.HelpAppUpdate)
|
|
if !ok {
|
|
t.Fatalf("result = %T, want *tg.HelpAppUpdate", result)
|
|
}
|
|
if update.ID != 91 || update.Version != "12.9.1" || update.Text != "Новая версия" || !update.GetCanNotSkip() {
|
|
t.Fatalf("update = %#v", update)
|
|
}
|
|
if got, ok := update.GetURL(); !ok || got != "https://updates.example/app.apk" {
|
|
t.Fatalf("url = %q, %v", got, ok)
|
|
}
|
|
if resolver.request.Platform != "android" || resolver.request.Version != "12.9.0 (500)" ||
|
|
resolver.request.Source != "com.example.store" || resolver.request.LangCode != "ru" {
|
|
t.Fatalf("resolve request = %#v", resolver.request)
|
|
}
|
|
}
|
|
|
|
func TestHelpGetAppUpdateFailsClosedWithoutRPCError(t *testing.T) {
|
|
resolver := &fakeAppUpdateResolver{err: errors.New("service unavailable")}
|
|
router := New(Config{PublicBaseURL: "https://telesrv.example"}, Deps{AppUpdates: resolver}, zap.NewNop(), clock.System)
|
|
ctx := WithClientInfo(WithUserID(context.Background(), 1000000001), ClientInfo{Type: ClientTypeIOS, AppVersion: "12.9.0"})
|
|
result, err := router.onHelpGetAppUpdate(ctx, "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, ok := result.(*tg.HelpNoAppUpdate); !ok {
|
|
t.Fatalf("result = %T, want *tg.HelpNoAppUpdate", result)
|
|
}
|
|
}
|