This repository was archived by the owner on Aug 25, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmicrosoft_test.go
More file actions
125 lines (90 loc) · 2.67 KB
/
microsoft_test.go
File metadata and controls
125 lines (90 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package microsoft
import (
"strconv"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
type AuthRequestMock struct{ mock.Mock }
type TokenResponseMock struct{ mock.Mock }
func (m *AuthRequestMock) GetAccessToken() TokenResponse {
ret := m.Mock.Called()
return ret.Get(0).(TokenResponse)
}
func (m *TokenResponseMock) Translate() (string, error) {
ret := m.Mock.Called()
return ret.Get(0).(string), ret.Error(1)
}
func (m *TokenResponseMock) TranslateArray() ([]string, error) {
ret := m.Mock.Called()
return ret.Get(0).([]string), ret.Error(1)
}
func (m *TokenResponseMock) DetectTextArray() ([]string, error) {
ret := m.Mock.Called()
return ret.Get(0).([]string), ret.Error(1)
}
func (m *TokenResponseMock) CheckTimeout() bool {
ret := m.Mock.Called()
return ret.Bool(0)
}
func makeValidTokenResponse() TokenResponse {
now := time.Now()
expires_in, _ := strconv.ParseInt("600", 10, 0)
// 10 min
exp_time := now.Add(time.Duration(expires_in) * time.Second)
return TokenResponse{
AccessToken: "s3cr3t0k3n",
ExpiresIn: "600",
Timeout: exp_time,
}
}
func TestGetToken(t *testing.T) {
mockObj := new(AuthRequestMock)
tokenResponse := makeValidTokenResponse()
mockObj.On("GetAccessToken").Return(tokenResponse)
tr := GetAccessToken(mockObj)
mockObj.AssertExpectations(t)
assert := assert.New(t)
assert.Equal("s3cr3t0k3n", tr.AccessToken)
assert.Equal("600", tr.ExpiresIn)
assert.False(tr.CheckTimeout())
}
func TestTranslateText(t *testing.T) {
mck := new(TokenResponseMock)
mck.On("CheckTimeout").Return(false)
mck.On("Translate").Return("um", nil)
text, _ := TranslateText(mck)
mck.AssertExpectations(t)
assert := assert.New(t)
assert.Equal("um", text)
}
func TestTranslateArrayText(t *testing.T) {
mck := new(TokenResponseMock)
mck.On("CheckTimeout").Return(false)
mck.On("TranslateArray").Return([]string{"um dois", "livro de fotos"}, nil)
text, _ := TranslateTexts(mck)
mck.AssertExpectations(t)
assert := assert.New(t)
assert.Equal("um dois", text[0])
assert.Equal("livro de fotos", text[1])
}
func TestDetectText(t *testing.T) {
mck := new(TokenResponseMock)
mck.On("CheckTimeout").Return(false)
mck.On("DetectTextArray").Return([]string{"en", "pt"}, nil)
text, _ := DetectText(mck)
mck.AssertExpectations(t)
assert := assert.New(t)
assert.Equal("en", text[0])
assert.Equal("pt", text[1])
}
func TestTranslateWithTokenExpired(t *testing.T) {
mck := new(TokenResponseMock)
mck.On("CheckTimeout").Return(true)
text, err := TranslateText(mck)
mck.AssertExpectations(t)
assert := assert.New(t)
assert.Equal("", text)
assert.EqualError(err, "Access token is invalid, please get new token")
}