package main

import (
	"github.com/matryer/is"
	"testing"
)

func TestHit(t *testing.T) {
	is := is.New(t)
	payload := `{\x22et\x22:1,\x22eid\x22:99,\x22url\x22:\x22https://xsolla.com/ko/\x22,\x22referer\x22:\x22http://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=xsolla&url=https%3A%2F%2Fxsolla.com%2F&ucs=5tjyzVy97uj%2B\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1250,\x22wch\x22:868,\x22plt\x22:3733,\x22la\x22:\x22ko-kr\x22,\x22j\x22:1,\x22clid\x22:\x221509535150359010389\x22,\x22cid\x22:1003,\x22vid\x22:\x221509535150995133529\x22,\x22c\x22:1,\x22sw\x22:1920,\x22sh\x22:1080,\x22sc\x22:24,\x22gaid\x22:\x22645794913.1509535148\x22}}`
	hit, err := processHit("2017-10-13T03:37:51+00:00", "192.168.0.1", payload, "", "12345678910", "1534759528.135", "0")
	is.NoErr(err)
	val := hit["HitID"]
	is.True(val != "")

	is.True(hit["EventType"] == "1")
	is.True(hit["SameSite"] == "1")
	is.True(hit["ExternalID"] == "99")
	is.Equal(hit["XsollaUID"], "12345678910")
	is.Equal(hit["IpAddress"], "192.168.0.1")
}

// Тест на обработку ошибки в случае неверного формата даты
func TestProcessInputNginxDateError(t *testing.T) {
	is := is.New(t)
	data := `18-03-26T16:49:57	46.146.211.3, 35.227.236.237	-	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36	452894266394419200	1534759528.135`
	_, err := processInput(data)
	if err == nil {
		is.Fail()
	}
}

// Тест на обработку ошибки в случае непустой ошибки от функции strconv.Unquote
func TestProcessHitUnquoteError(t *testing.T) {
	is := is.New(t)
	payload := "{\x22et\x22:1,\x22eid\x22:99,\x22url\x22:\x22https://xsolla.com/ko/\x22,\x22referer\x22:\x22http://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=xsolla&url=https%3A%2F%2Fxsolla.com%2F&ucs=5tjyzVy97uj%2B\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1250,\x22wch\x22:868,\x22plt\x22:3733,\x22la\x22:\x22ko-kr\x22,\x22j\x22:1,\x22clid\x22:\x221509535150359010389\x22,\x22cid\x22:1003,\x22vid\x22:\x221509535150995133529\x22,\x22c\x22:1,\x22sw\x22:1920,\x22sh\x22:1080,\x22sc\x22:24,\x22gaid\x22:\x22645794913.1509535148\x22}}"
	_, err := processHit("2017-10-13T03:37:51+00:00", "192.168.0.1", payload, "", "12345678910", "1534759528.135", "0")
	if err == nil {
		is.Fail()
	}
}

func TestProcessInputNoXsollaUID(t *testing.T) {
	is := is.New(t)
	data := `2018-03-26T16:49:57+00:00	46.146.211.3, 35.227.236.237	-	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36`
	result, err := processInput(data)
	is.NoErr(err)
	// без HitId
	success := "2018-03-26	2018-03-26 16:49:57								46.146.211.3																						Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36										Chrome	65		Mac OS X	10	13	3			Russia	RU	Perm	58.0000000000	56.2500000000							"
	is.Equal(result[19:301], success)
}

func TestData(t *testing.T) {
	is := is.New(t)

	data := `2018-03-26T16:49:57+00:00	46.146.211.3, 35.227.236.237	-	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36	452894266394419200	1534759528.135`
	result, err := processInput(data)
	is.NoErr(err)
	// без HitId
	success := "2018-03-26	2018-03-26 16:49:57			452894266394419200					46.146.211.3																						Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36										Chrome	65		Mac OS X	10	13	3			Russia	RU	Perm	58.0000000000	56.2500000000						1534759528135	"
	is.Equal(result[19:332], success)
}

/**
xsolla\ -> xsolla
\t,\b,\n,\r->' '
\a,\v,\f,\->''
*/
func TestEscapeBackslash(t *testing.T) {
	is := is.New(t)

	data := `2018-09-06T18:58:18+03:00	125.128.115.126, 35.186.204.162	{\x22et\x22:1,\x22url\x22:\x22https://xsolla.com/\x22,\x22referer\x22:\x22https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22\xEC\x97\x91\xEC\x86\x94\xEB\x9D\xBC\xEC\x9D\x98 \xED\x88\xB4\xEA\xB3\xBC \xEC\x84\x9C\xEB\xB9\x84\xEC\x8A\xA4\xEB\xA5\xBC \xEC\x9D\xB4\xEC\x9A\xA9\xED\x95\x98\xEC\x97\xAC\xEA\xB8\x80\xEB\xA1\x9C\xEB\xB2\x8C \xEA\xB7\x9C\xEB\xAA\xA8\xEB\xA1\x9C \xEA\xB2\x8C\xEC\x9E\x84\xEC\x9D\x84, \xEB\x9F\xB0\xEC\xB9\xAD\xED\x95\x98\xEC\x97\xAC, \xEC\x88\x98\xEC\x9D\xB5\xEC\x9D\x84 \xEC\xB0\xBD\xEC\xB6\x9C\xED\x95\xB4 \xEB\xB3\xB4\xEC\x84\xB8\xEC\x9A\x94. | Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1054,\x22wch\x22:1198,\x22plt\x22:1212,\x22la\x22:\x22ko-kr\x22,\x22j\x22:0,\x22clid\x22:\x22153624949816138262\x22,\x22cid\x22:1003,\x22vid\x22:\x221536249498322302905\x22,\x22c\x22:1,\x22sw\x22:1080,\x22sh\x22:1920,\x22sc\x22:24,\x22yid\x22:\x221528432809241994156\x22}}	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36	36045342877155339	1536249498.581`
	result, err := processInput(data)
	is.NoErr(err)
	success := "2018-09-06	2018-09-06 18:58:18	1003	153624949816138262	36045342877155339		1528432809241994156		1536249498322302905	125.128.115.126	1	https://xsolla.com/	https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C	엑솔라의 툴과 서비스를 이용하여글로벌 규모로 게임을, 런칭하여, 수익을 창출해 보세요. | Xsolla		1		utf-8		540	1	1212	ko-kr				24	1920	1080	1198	1054	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36										Chrome	68		Windows 10						Republic of Korea	KR	Seoul	37.5111000000	126.9743000000			Naver	xsolla	organic	1536249498581	"
	is.Equal(result[19:695], success)

	data = `2018-09-20T19:10:12+03:00	88.206.29.75, 35.186.204.162	{\x22et\x22:\x221\x22,\x22url\x22:\x22https://publisher.xsolla.com/65989/projects/36323/payments\x22,\x22ident\x22:{\x22t\x22:\x22Publisher Account\x22,\x22pc\x22:\x22\xEF\xBF\xBD\xEF\xBF\xBD\x5Cb\xEF\xBF\xBD$\xEF\xBF\xBD\xEF\xBF\xBD7\x5Ct\xEF\xBF\xBD=\xEF\xBF\xBD\x5Cu0002\x5Cu0007\xEF\xBF\xBDI\x22,\x22tz\x22:\x22300\x22,\x22wcw\x22:\x221326\x22,\x22wch\x22:\x22785\x22,\x22plt\x22:\x22null\x22,\x22la\x22:\x22ru-ru\x22,\x22j\x22:\x220\x22,\x22clid\x22:\x221537415344881801599\x22,\x22cid\x22:\x221004\x22,\x22vid\x22:\x221537443533806528107\x22,\x22c\x22:\x221\x22,\x22sw\x22:\x222560\x22,\x22sh\x22:\x221080\x22,\x22sc\x22:\x2224\x22,\x22gaid\x22:\x22673585741.1537415292\x22}}	Wallarm attack-rechecker (v1.x)	38001210149568523	1537459812.649	`
	result, err = processInput(data)
	is.NoErr(err)
	success = "2018-09-20	2018-09-20 19:10:12		1537415344881801599	38001210149568523			673585741.1537415292	1537443533806528107	88.206.29.75		https://publisher.xsolla.com/65989/projects/36323/payments		Publisher Account				�� �$��7 �=��I					ru-ru									Wallarm attack-rechecker (v1.x)										Other			Other						Russia	RU	Chelyabinsk	55.1540000000	61.4291000000						1537459812649							"
	is.Equal(result[19:412], success)

	data = `2018-09-20T19:10:17+03:00	88.206.29.75, 35.186.204.162	{\x22eid\x22:\x2265989\x22,\x22et\x22:\x221\x22,\x22referer\x22:\x22https://publisher.xsolla.com/65989/projects/36323/payments\x22,\x22url\x22:\x22https://publisher.xsolla.com/65989/projects/36323/payments/sharing\x22,\x22ident\x22:{\x22t\x22:\x22<?xml version=\x5C\x221.0\x5C\x22?>\x5Cn<!DOCTYPE a SYSTEM \x5C\x22http://pgmevnudqix77xs9.a.wlrm.tl/a.dtd\x5C\x22[\x5Cn  <!ENTITY % b SYSTEM \x5C\x22http://pgmevnudqix77xs9.a.wlrm.tl/b.ent\x5C\x22>\x5Cn  %b;\x5Cn]>\x5Cn<a>wlrm-scnr</a>\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:\x22300\x22,\x22wcw\x22:\x221343\x22,\x22wch\x22:\x22785\x22,\x22plt\x22:\x22null\x22,\x22la\x22:\x22ru-ru\x22,\x22j\x22:\x220\x22,\x22clid\x22:\x221537415344881801599\x22,\x22cid\x22:\x221004\x22,\x22vid\x22:\x221537443533806528107\x22,\x22c\x22:\x221\x22,\x22sw\x22:\x222560\x22,\x22sh\x22:\x221080\x22,\x22sc\x22:\x2224\x22,\x22gaid\x22:\x22673585741.1537415292\x22}}	Wallarm attack-rechecker (v1.x)	38001210149568523	1537459817.001`
	result, err = processInput(data)
	is.NoErr(err)
	// без HitId
	success = `2018-09-20	2018-09-20 19:10:17		1537415344881801599	38001210149568523	65989		673585741.1537415292	1537443533806528107	88.206.29.75		https://publisher.xsolla.com/65989/projects/36323/payments/sharing	https://publisher.xsolla.com/65989/projects/36323/payments	<?xml version="1.0"?> <!DOCTYPE a SYSTEM "http://pgmevnudqix77xs9.a.wlrm.tl/a.dtd"[   <!ENTITY % b SYSTEM "http://pgmevnudqix77xs9.a.wlrm.tl/b.ent">   %b; ]> <a>wlrm-scnr</a>				utf-8					ru-ru									Wallarm attack-rechecker (v1.x)										Other			Other						Russia	RU	Chelyabinsk	55.1540000000	61.4291000000						1537459817001	`
	is.Equal(result[19:608], success)

}

func TestEV(t *testing.T) {
	is := is.New(t)

	data := `2018-09-06T18:58:18+03:00	125.128.115.126, 35.186.204.162	{\x22et\x22:1,\x22ev\x22:null,\x22url\x22:\x22https://xsolla.com/\x22,\x22referer\x22:\x22https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22\xEC\x97\x91\xEC\x86\x94\xEB\x9D\xBC\xEC\x9D\x98 \xED\x88\xB4\xEA\xB3\xBC \xEC\x84\x9C\xEB\xB9\x84\xEC\x8A\xA4\xEB\xA5\xBC \xEC\x9D\xB4\xEC\x9A\xA9\xED\x95\x98\xEC\x97\xAC\xEA\xB8\x80\xEB\xA1\x9C\xEB\xB2\x8C \xEA\xB7\x9C\xEB\xAA\xA8\xEB\xA1\x9C \xEA\xB2\x8C\xEC\x9E\x84\xEC\x9D\x84, \xEB\x9F\xB0\xEC\xB9\xAD\xED\x95\x98\xEC\x97\xAC, \xEC\x88\x98\xEC\x9D\xB5\xEC\x9D\x84 \xEC\xB0\xBD\xEC\xB6\x9C\xED\x95\xB4 \xEB\xB3\xB4\xEC\x84\xB8\xEC\x9A\x94. | Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1054,\x22wch\x22:1198,\x22plt\x22:1212,\x22la\x22:\x22ko-kr\x22,\x22j\x22:0,\x22clid\x22:\x22153624949816138262\x22,\x22cid\x22:1003,\x22vid\x22:\x221536249498322302905\x22,\x22c\x22:1,\x22sw\x22:1080,\x22sh\x22:1920,\x22sc\x22:24,\x22yid\x22:\x221528432809241994156\x22}}	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36	36045342877155339	1536249498.581`
	result, err := processInput(data)
	is.NoErr(err)
	success := "2018-09-06	2018-09-06 18:58:18	1003	153624949816138262	36045342877155339		1528432809241994156		1536249498322302905	125.128.115.126	1	https://xsolla.com/	https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C	엑솔라의 툴과 서비스를 이용하여글로벌 규모로 게임을, 런칭하여, 수익을 창출해 보세요. | Xsolla		1		utf-8		540	1	1212	ko-kr				24	1920	1080	1198	1054	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36										Chrome	68		Windows 10						Republic of Korea	KR	Seoul	37.5111000000	126.9743000000			Naver	xsolla	organic	1536249498581	"
	is.Equal(result[19:695], success)
}

func TestEXV(t *testing.T) {
	is := is.New(t)

	// string
	data := `2018-09-06T18:58:18+03:00	125.128.115.126, 35.186.204.162	{\x22et\x22:1,\x22exv\x22:\x22aaaa\x22,\x22url\x22:\x22https://xsolla.com/\x22,\x22referer\x22:\x22https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22\xEC\x97\x91\xEC\x86\x94\xEB\x9D\xBC\xEC\x9D\x98 \xED\x88\xB4\xEA\xB3\xBC \xEC\x84\x9C\xEB\xB9\x84\xEC\x8A\xA4\xEB\xA5\xBC \xEC\x9D\xB4\xEC\x9A\xA9\xED\x95\x98\xEC\x97\xAC\xEA\xB8\x80\xEB\xA1\x9C\xEB\xB2\x8C \xEA\xB7\x9C\xEB\xAA\xA8\xEB\xA1\x9C \xEA\xB2\x8C\xEC\x9E\x84\xEC\x9D\x84, \xEB\x9F\xB0\xEC\xB9\xAD\xED\x95\x98\xEC\x97\xAC, \xEC\x88\x98\xEC\x9D\xB5\xEC\x9D\x84 \xEC\xB0\xBD\xEC\xB6\x9C\xED\x95\xB4 \xEB\xB3\xB4\xEC\x84\xB8\xEC\x9A\x94. | Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1054,\x22wch\x22:1198,\x22plt\x22:1212,\x22la\x22:\x22ko-kr\x22,\x22j\x22:0,\x22clid\x22:\x22153624949816138262\x22,\x22cid\x22:1003,\x22vid\x22:\x221536249498322302905\x22,\x22c\x22:1,\x22sw\x22:1080,\x22sh\x22:1920,\x22sc\x22:24,\x22yid\x22:\x221528432809241994156\x22}}	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36	36045342877155339	1536249498.581`
	result, err := processInput(data)
	is.NoErr(err)
	success := "2018-09-06	2018-09-06 18:58:18	1003	153624949816138262	36045342877155339		1528432809241994156		1536249498322302905	125.128.115.126	1	https://xsolla.com/	https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C	엑솔라의 툴과 서비스를 이용하여글로벌 규모로 게임을, 런칭하여, 수익을 창출해 보세요. | Xsolla		1		utf-8		540	1	1212	ko-kr				24	1920	1080	1198	1054	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36										Chrome	68		Windows 10						Republic of Korea	KR	Seoul	37.5111000000	126.9743000000			Naver	xsolla	organic	1536249498581								aaaa			"
	is.Equal(result[19:], success)

	//json
	data = `2018-09-06T18:58:18+03:00	125.128.115.126, 35.186.204.162	{\x22et\x22:1,\x22exv\x22:\x22{\x5c\x22name\x5c\x22:\x5c\x22value\x5c\x22}\x22,\x22url\x22:\x22https://xsolla.com/\x22,\x22referer\x22:\x22https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22\xEC\x97\x91\xEC\x86\x94\xEB\x9D\xBC\xEC\x9D\x98 \xED\x88\xB4\xEA\xB3\xBC \xEC\x84\x9C\xEB\xB9\x84\xEC\x8A\xA4\xEB\xA5\xBC \xEC\x9D\xB4\xEC\x9A\xA9\xED\x95\x98\xEC\x97\xAC\xEA\xB8\x80\xEB\xA1\x9C\xEB\xB2\x8C \xEA\xB7\x9C\xEB\xAA\xA8\xEB\xA1\x9C \xEA\xB2\x8C\xEC\x9E\x84\xEC\x9D\x84, \xEB\x9F\xB0\xEC\xB9\xAD\xED\x95\x98\xEC\x97\xAC, \xEC\x88\x98\xEC\x9D\xB5\xEC\x9D\x84 \xEC\xB0\xBD\xEC\xB6\x9C\xED\x95\xB4 \xEB\xB3\xB4\xEC\x84\xB8\xEC\x9A\x94. | Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1054,\x22wch\x22:1198,\x22plt\x22:1212,\x22la\x22:\x22ko-kr\x22,\x22j\x22:0,\x22clid\x22:\x22153624949816138262\x22,\x22cid\x22:1003,\x22vid\x22:\x221536249498322302905\x22,\x22c\x22:1,\x22sw\x22:1080,\x22sh\x22:1920,\x22sc\x22:24,\x22yid\x22:\x221528432809241994156\x22}}	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36	36045342877155339	1536249498.581`
	result, err = processInput(data)
	is.NoErr(err)
	success = `2018-09-06	2018-09-06 18:58:18	1003	153624949816138262	36045342877155339		1528432809241994156		1536249498322302905	125.128.115.126	1	https://xsolla.com/	https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C	엑솔라의 툴과 서비스를 이용하여글로벌 규모로 게임을, 런칭하여, 수익을 창출해 보세요. | Xsolla		1		utf-8		540	1	1212	ko-kr				24	1920	1080	1198	1054	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36										Chrome	68		Windows 10						Republic of Korea	KR	Seoul	37.5111000000	126.9743000000			Naver	xsolla	organic	1536249498581								{"name":"value"}			`
	is.Equal(result[19:], success)
}

func TestForm(t *testing.T) {
	is := is.New(t)
	//json
	data := `2018-09-06T18:58:18+03:00	125.128.115.126, 35.186.204.162	{\x22et\x22:1,\x22form\x22:\x22{\x5c\x22name\x5c\x22:\x5c\x22value\x5c\x22}\x22,\x22url\x22:\x22https://xsolla.com/\x22,\x22referer\x22:\x22https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C\x22,\x22ss\x22:1,\x22ident\x22:{\x22t\x22:\x22\xEC\x97\x91\xEC\x86\x94\xEB\x9D\xBC\xEC\x9D\x98 \xED\x88\xB4\xEA\xB3\xBC \xEC\x84\x9C\xEB\xB9\x84\xEC\x8A\xA4\xEB\xA5\xBC \xEC\x9D\xB4\xEC\x9A\xA9\xED\x95\x98\xEC\x97\xAC\xEA\xB8\x80\xEB\xA1\x9C\xEB\xB2\x8C \xEA\xB7\x9C\xEB\xAA\xA8\xEB\xA1\x9C \xEA\xB2\x8C\xEC\x9E\x84\xEC\x9D\x84, \xEB\x9F\xB0\xEC\xB9\xAD\xED\x95\x98\xEC\x97\xAC, \xEC\x88\x98\xEC\x9D\xB5\xEC\x9D\x84 \xEC\xB0\xBD\xEC\xB6\x9C\xED\x95\xB4 \xEB\xB3\xB4\xEC\x84\xB8\xEC\x9A\x94. | Xsolla\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:540,\x22wcw\x22:1054,\x22wch\x22:1198,\x22plt\x22:1212,\x22la\x22:\x22ko-kr\x22,\x22j\x22:0,\x22clid\x22:\x22153624949816138262\x22,\x22cid\x22:1003,\x22vid\x22:\x221536249498322302905\x22,\x22c\x22:1,\x22sw\x22:1080,\x22sh\x22:1920,\x22sc\x22:24,\x22yid\x22:\x221528432809241994156\x22}}	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36	36045342877155339	1536249498.581`
	result, err := processInput(data)
	is.NoErr(err)
	success := `2018-09-06	2018-09-06 18:58:18	1003	153624949816138262	36045342877155339		1528432809241994156		1536249498322302905	125.128.115.126	1	https://xsolla.com/	https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=xsolla%5C	엑솔라의 툴과 서비스를 이용하여글로벌 규모로 게임을, 런칭하여, 수익을 창출해 보세요. | Xsolla		1	{"name":"value"}	utf-8		540	1	1212	ko-kr				24	1920	1080	1198	1054	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36										Chrome	68		Windows 10						Republic of Korea	KR	Seoul	37.5111000000	126.9743000000			Naver	xsolla	organic	1536249498581											`
	is.Equal(result[19:], success)
}

func TestXsollaUid(t *testing.T) {
	is := is.New(t)

	data := `2018-10-23T17:05:16+03:00	185.30.23.18, 35.186.204.162	{\x22eid\x22:42505,\x22referer\x22:\x22http://localhost:9000/42505/projects/24256/launchers\x22,\x22et\x22:1,\x22url\x22:\x22http://localhost:9000/42505/projects/24256/launchers/ebecf5ff-c3e7-40e4-a7e8-777d60b10b3e/games/432/builds-setup\x22,\x22ident\x22:{\x22t\x22:\x22Kundenportal\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:300,\x22wcw\x22:1589,\x22wch\x22:911,\x22plt\x22:null,\x22la\x22:\x22en\x22,\x22j\x22:0,\x22clid\x22:\x221540202105416599513\x22,\x22cid\x22:1002,\x22vid\x22:\x22154030080345506898\x22,\x22c\x22:1,\x22sw\x22:1920,\x22sh\x22:1080,\x22sc\x22:24,\x22gaid\x22:\x222009428011.1540202106\x22}}	Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:61.0) Gecko/20100101 Firefox/61.0	eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NDAzNTc3NjQsImlzcyI6Imh0dHBzOlwvXC9sb2dpbi54c29sbGEuY29tIiwiaWF0IjoxNTQwMjcxMzY0LCJ1c2VybmFtZSI6ImUua29jaGV0b3ZhQHhzb2xsYS5jb20iLCJyZWRpcmVjdF91cmwiOiJodHRwczpcL1wvdGVzdC1tZXJjaGFudC54c29sbGEuY29tXC8iLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IldEbDZNRWlOTnRxSlhpRjl4cXNYUi1NNzFyN2w4MThLQldoQXhJSC11UEUiLCJzdWIiOiI5YTNhZjA3Yy03ODZhLTExZTgtOWZmNS04ZGQ1OTg1NTNiYWMiLCJwYXJ0bmVyX2RhdGEiOnsiYWRtaW4iOnRydWV9LCJ0eXBlIjoicHJveHkiLCJwcm92aWRlciI6Inhzb2xsYSIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiNDBkYjJlYTQtNWQ0Mi0xMWU2LWEzZmYtMDA1MDU2YTBlMDRhIn0.RlcEMA5T-St1Rp37OX1trCd76BsTPRslcRsPUlhSeDE	1540303516.010`
	result, err := processInput(data)
	is.NoErr(err)
	success := "2018-10-23	2018-10-23 17:05:16	1002	1540202105416599513		42505		2009428011.1540202106	154030080345506898	185.30.23.18	1	http://localhost:9000/42505/projects/24256/launchers/ebecf5ff-c3e7-40e4-a7e8-777d60b10b3e/games/432/builds-setup	http://localhost:9000/42505/projects/24256/launchers	Kundenportal				utf-8		300	1		en				24	1080	1920	911	1589	Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:61.0) Gecko/20100101 Firefox/61.0										Firefox	61		Mac OS X	10	12				United States	US		37.7510000000	-97.8220000000					internal	1540303516010	"
	is.Equal(result[19:559], success)
}

func TestABParams(t *testing.T) {
	is := is.New(t)

	data := `2020-07-07T11:46:48+00:00	-	{\x22et\x22:1,\x22url\x22:\x22https://test.test.xsolla1.com/\x22,\x22eid\x22:12345,\x22exv\x22:\x22{\x5C\x22userID\x5C\x22:12345,\x5C\x22merchantId\x5C\x22:98765}\x22,\x22abParams\x22:\x22{\x5C\x22project_id\x5C\x22:15070,\x5C\x22user_id\x5C\x22:\x5C\x22john@smith.com\x5C\x22,\x5C\x22country_iso\x5C\x22:\x5C\x22US\x5C\x22,\x5C\x22ui_version\x5C\x22:\x5C\x22desktop\x5C\x22,\x5C\x22experiment_group\x5C\x22:\x5C\x22PAYMENTS-123_B\x5C\x22}\x22,\x22ident\x22:{\x22t\x22:\x22\xD0\x90\xD0\xB2\xD1\x82\xD0\xBE\xD1\x81\xD1\x82\xD0\xB0\xD1\x82\xD1\x8C\xD0\xB8 \xD0\xBF\xD0\xBE \xD0\xBC\xD0\xB0\xD1\x82\xD0\xB5\xD0\xBC\xD0\xB0\xD1\x82\xD0\xB8\xD0\xBA\xD0\xB5\x22,\x22pc\x22:\x22utf-8\x22,\x22tz\x22:300,\x22wcw\x22:1680,\x22wch\x22:412,\x22plt\x22:null,\x22la\x22:\x22en-gb\x22,\x22j\x22:0,\x22clid\x22:\x221590450218815708139\x22,\x22cid\x22:1002,\x22vid\x22:\x221594121676161930622\x22,\x22c\x22:1,\x22sw\x22:1680,\x22sh\x22:1050,\x22sc\x22:24}}	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36	127187982623965711	1594122408.764`
	result, err := processInput(data)
	is.NoErr(err)
	success := `2020-07-07	2020-07-07 11:46:48	1002	1590450218815708139	127187982623965711	12345			1594121676161930622		1	https://test.test.xsolla1.com/		Автостатьи по математике				utf-8		300	1		en-gb				24	1050	1680	412	1680	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36										Chrome	83		Mac OS X	10	14	6												direct	1594122408764								{"userID":12345,"merchantId":98765}	{"project_id":15070,"user_id":"john@smith.com","country_iso":"US","ui_version":"desktop","experiment_group":"PAYMENTS-123_B"}		`
	is.Equal(result[19:], success)
}
