2024-04-01 00:02:32 +03:00
|
|
|
|
// Live API tests.
|
|
|
|
|
// To run API test pass `DADATA_API_KEY` and `DADATA_SECRET_KEY` environment variables with your values.
|
2019-04-09 17:08:32 +03:00
|
|
|
|
package dadata
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/suite"
|
2020-12-14 19:00:36 +03:00
|
|
|
|
|
|
|
|
|
"github.com/ekomobile/dadata/v2/api/suggest"
|
2019-04-09 17:08:32 +03:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type (
|
|
|
|
|
ApiSuggestIntegrationTest struct {
|
|
|
|
|
suite.Suite
|
|
|
|
|
}
|
2024-04-01 00:02:32 +03:00
|
|
|
|
|
|
|
|
|
ApiCleanIntegrationTest struct {
|
|
|
|
|
suite.Suite
|
|
|
|
|
}
|
2019-04-09 17:08:32 +03:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) SetupSuite() {
|
|
|
|
|
if _, ok := os.LookupEnv("DADATA_API_KEY"); !ok {
|
|
|
|
|
s.Suite.T().Skip("no api keys in env")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-01 00:02:32 +03:00
|
|
|
|
func (s *ApiCleanIntegrationTest) SetupSuite() {
|
|
|
|
|
if _, ok := os.LookupEnv("DADATA_API_KEY"); !ok {
|
|
|
|
|
s.Suite.T().Skip("no api keys in env")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestSuggestApiIntegration(t *testing.T) {
|
|
|
|
|
suite.Run(t, &ApiSuggestIntegrationTest{})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCleanApiIntegration(t *testing.T) {
|
|
|
|
|
suite.Run(t, &ApiCleanIntegrationTest{})
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-09 17:08:32 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestAddress() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "ул Свободы",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Address(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-08 19:46:32 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestAddressWithLanguageParamRU() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "ул Свободы",
|
|
|
|
|
Language: "RU",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
res, err := api.Address(context.Background(), ¶ms)
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestAddressWithLanguageParamEN() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "ул Свободы",
|
|
|
|
|
Language: "EN",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
res, err := api.Address(context.Background(), ¶ms)
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-09 17:08:32 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestBank() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "сбербанк",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Bank(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestParty() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "сбербанк",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Party(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-23 08:51:53 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestPartyWithTypePositive() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
// positive: there are some legal entities "сбербанк"
|
|
|
|
|
res, err := api.Party(context.Background(), &suggest.RequestParams{
|
|
|
|
|
Query: "сбербанк",
|
2024-05-08 19:52:33 +03:00
|
|
|
|
Type: suggest.PartyTypeLegal,
|
2024-04-23 08:51:53 +03:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-08 19:32:13 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestPartyWithTypeNegative() {
|
2024-04-23 08:51:53 +03:00
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
// there are no one individual entrepreneur "сбербанк"
|
|
|
|
|
res, err := api.Party(context.Background(), &suggest.RequestParams{
|
|
|
|
|
Query: "сбербанк",
|
2024-05-08 19:52:33 +03:00
|
|
|
|
Type: suggest.PartyTypeIndividual,
|
2024-04-23 08:51:53 +03:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.Empty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-14 19:00:36 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestPartyById() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
query := "7707083893"
|
|
|
|
|
params := suggest.NewPartyByIDParams(query)
|
|
|
|
|
|
|
|
|
|
res, err := api.PartyByID(context.Background(), params)
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestPartyByIdWithKPP() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
query := "7707083893"
|
|
|
|
|
testKPP := "773601001"
|
|
|
|
|
|
|
|
|
|
params := suggest.NewPartyByIDParams(query).
|
|
|
|
|
SetKPP(testKPP)
|
|
|
|
|
|
|
|
|
|
res, err := api.PartyByID(context.Background(), params)
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Equal(query, res[0].Data.Inn)
|
|
|
|
|
s.Equal(testKPP, res[0].Data.Kpp)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestPartyByIdWithBranchType() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
query := "7707083893"
|
|
|
|
|
|
|
|
|
|
params := suggest.NewPartyByIDParams(query).
|
|
|
|
|
SetBranchType(suggest.PartyBranchTypeMain).
|
|
|
|
|
SetType(suggest.PartyTypeLegal)
|
|
|
|
|
|
|
|
|
|
res, err := api.PartyByID(context.Background(), params)
|
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Equal(query, res[0].Data.Inn)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-09 17:08:32 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestCountry() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "росс",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Country(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestName() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "але",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Name(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-11 11:26:02 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestNameWithParts() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "але",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Name(context.Background(), ¶ms, suggest.WithNameParts(suggest.NamePartSurname))
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestNameWithGender() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "але",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Name(context.Background(), ¶ms, suggest.WithNameGender(suggest.NameGenderFemale))
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-09 17:08:32 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestEmail() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "ax",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.Email(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-10 11:49:20 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestFMSUnit() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "увд",
|
|
|
|
|
}
|
|
|
|
|
res, err := api.FMSUnit(context.Background(), ¶ms)
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-01 00:02:32 +03:00
|
|
|
|
func (s *ApiCleanIntegrationTest) TestAddress() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Address(context.Background(), "мск сухонска 11/-89")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestPhone() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Phone(context.Background(), "+79851234567")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestName() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Name(context.Background(), "Срегей владимерович иванов")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestEmail() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Email(context.Background(), "serega@yandex/ru")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestBirthday() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Birthday(context.Background(), "12 12 12")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestVehicle() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Vehicle(context.Background(), "форд фокус")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *ApiCleanIntegrationTest) TestPassport() {
|
|
|
|
|
api := NewCleanApi()
|
|
|
|
|
res, err := api.Passport(context.Background(), "4509 235857")
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
s.Len(res, 1)
|
2019-04-09 17:08:32 +03:00
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithoutLongitude() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lat: "55.878",
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.Empty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithoutLatitude() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lon: "37.653",
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.Empty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithEmptyBody() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{}
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.Empty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithLanguageParamRU() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lat: "55.878",
|
|
|
|
|
Lon: "37.653",
|
|
|
|
|
Language: "RU",
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithLanguageParamEN() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lat: "55.878",
|
|
|
|
|
Lon: "37.653",
|
|
|
|
|
Language: "EN",
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithCountTwo() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
reqElementCount := 2
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lat: "55.878",
|
|
|
|
|
Lon: "37.653",
|
|
|
|
|
Language: "EN",
|
2024-05-12 17:56:24 +03:00
|
|
|
|
Count: reqElementCount,
|
2024-05-11 18:26:55 +03:00
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
2024-05-12 17:56:24 +03:00
|
|
|
|
s.Len(res, reqElementCount)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
func (s *ApiSuggestIntegrationTest) TestGeoLocateWithRadius() {
|
|
|
|
|
api := NewSuggestApi()
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
params := suggest.GeolocateParams{
|
2024-05-11 18:26:55 +03:00
|
|
|
|
Lat: "55.878",
|
|
|
|
|
Lon: "37.653",
|
|
|
|
|
Language: "EN",
|
2024-05-12 17:56:24 +03:00
|
|
|
|
RadiusMeters: 100,
|
2024-05-11 18:26:55 +03:00
|
|
|
|
}
|
|
|
|
|
|
2024-05-12 09:07:57 +03:00
|
|
|
|
res, err := api.GeoLocate(context.Background(), ¶ms)
|
2024-05-11 18:26:55 +03:00
|
|
|
|
|
|
|
|
|
s.NoError(err)
|
|
|
|
|
s.NotEmpty(res)
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-09 17:08:32 +03:00
|
|
|
|
func ExampleNewSuggestApi() {
|
|
|
|
|
api := NewSuggestApi()
|
|
|
|
|
|
|
|
|
|
params := suggest.RequestParams{
|
|
|
|
|
Query: "ул Свободы",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
suggestions, err := api.Address(context.Background(), ¶ms)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, s := range suggestions {
|
|
|
|
|
fmt.Printf("%s", s.Value)
|
|
|
|
|
}
|
|
|
|
|
}
|