Sha256: c47c48d942255415245878d653878c604d8a563198c859f414e1d6e6e659159f

Contents?: true

Size: 1.61 KB

Versions: 8

Compression:

Stored size: 1.61 KB

Contents

require 'test_helper'

if DEVISE_TOKEN_AUTH_ORM == :active_record
  describe 'DeviseTokenAuth::Concerns::TokensSerialization' do
    let(:ts) { DeviseTokenAuth::Concerns::TokensSerialization }
    let(:user) { FactoryBot.create(:user) }
    let(:tokens) do
      # Сreate all possible token's attributes combinations
      user.create_token
      2.times { user.create_new_auth_token(user.tokens.first[0]) }
      user.create_new_auth_token
      user.create_token

      user.tokens
    end
    let(:json) { JSON.generate(tokens) }

    it 'is defined' do
      assert_equal(ts.present?, true)
      assert_kind_of(Module, ts)
    end

    describe '.load(json)' do
      let(:default) { {} }

      it 'is defined' do
        assert_respond_to(ts, :load)
      end

      it 'handles nil' do
        assert_equal(ts.load(nil), default)
      end

      it 'handles string' do
        assert_equal(ts.load(json), JSON.parse(json))
      end

      it 'returns object of undesirable class' do
        assert_equal(ts.load([]), [])
      end
    end

    describe '.dump(object)' do
      let(:default) { 'null' }

      it 'is defined' do
        assert_respond_to(ts, :dump)
      end

      it 'handles nil' do
        assert_equal(ts.dump(nil), default)
      end

      it 'handles empty hash' do
        assert_equal(ts.dump({}), '{}')
      end

      it 'deserialize tokens' do
        assert_equal(ts.dump(tokens), json)
      end

      it 'removes nil values' do
        new_tokens = tokens.dup
        new_tokens[new_tokens.first[0]][:kos] = nil

        assert_equal(ts.dump(tokens), ts.dump(new_tokens))
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 4 rubygems

Version Path
sidecar_token_auth-1.0.1 test/models/concerns/tokens_serialization_test.rb
devise_token_auth-1.1.4 test/models/concerns/tokens_serialization_test.rb
devise_token_auth_multitenancy-1.1.3.2 test/models/concerns/tokens_serialization_test.rb
devise_token_auth_multitenancy-1.1.3.1 test/models/concerns/tokens_serialization_test.rb
devise_token_auth_multitenancy-1.1.3.alpha1 test/models/concerns/tokens_serialization_test.rb
devise-tokens-1.0.4 test/models/concerns/tokens_serialization_test.rb
devise_token_auth-1.1.3 test/models/concerns/tokens_serialization_test.rb
devise_token_auth-1.1.2 test/models/concerns/tokens_serialization_test.rb