// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // +build !integration package common import ( "encoding/json" "testing" "time" "github.com/stretchr/testify/assert" ) func TestParseTime(t *testing.T) { type inputOutput struct { Input string Output time.Time } tests := []inputOutput{ { Input: "2015-01-24T14:06:05.071Z", Output: time.Date(2015, time.January, 24, 14, 06, 05, 71*1e6, time.UTC), }, { Input: "2015-03-01T11:19:05.112Z", Output: time.Date(2015, time.March, 1, 11, 19, 05, 112*1e6, time.UTC), }, { Input: "2015-02-28T11:19:05.112Z", Output: time.Date(2015, time.February, 28, 11, 19, 05, 112*1e6, time.UTC), }, } for _, test := range tests { result, err := ParseTime(test.Input) assert.Nil(t, err) assert.Equal(t, test.Output, time.Time(result)) } } func TestParseTimeNegative(t *testing.T) { type inputOutput struct { Input string Err string } tests := []inputOutput{ { Input: "2015-02-29TT14:06:05.071Z", Err: "parsing time \"2015-02-29TT14:06:05.071Z\" as \"2006-01-02T15:04:05.000Z\": cannot parse \"T14:06:05.071Z\" as \"15\"", }, } for _, test := range tests { _, err := ParseTime(test.Input) assert.NotNil(t, err) assert.Equal(t, test.Err, err.Error()) } } func TestTimeMarshal(t *testing.T) { type inputOutput struct { Input MapStr Output string } tests := []inputOutput{ { Input: MapStr{ "@timestamp": Time(time.Date(2015, time.March, 01, 11, 19, 05, 112*1e6, time.UTC)), }, Output: `{"@timestamp":"2015-03-01T11:19:05.112Z"}`, }, { Input: MapStr{ "@timestamp": MustParseTime("2015-03-01T11:19:05.112Z"), "another": MustParseTime("2015-03-01T14:19:05.112Z"), }, Output: `{"@timestamp":"2015-03-01T11:19:05.112Z","another":"2015-03-01T14:19:05.112Z"}`, }, } for _, test := range tests { result, err := json.Marshal(test.Input) assert.Nil(t, err) assert.Equal(t, test.Output, string(result)) } }